char str[33] = "";
snprintf(str, sizeof str, "%s%s%s%s", preg->opbits,preg->rsbits,preg->rtbits,preg->ibits);
char *instruction = &str[0]
MIPS 어셈블리 명령어의 문자열 표현에서 32 비트 길이의 다른 요소로부터 이진 문자열을 작성하려고합니다. 여기서 opbits는 6 비트 opcode이고 rsbits는 첫 번째 소스의 5 비트 숫자입니다. rtbits는 즉치 (i) 형 명령어의 대상 레지스터의 5 비트 수이고 ibits는 16 비트 정수 값을 나타냅니다. 이 배열을 문자 배열로 연결 한 다음 해당 배열의 첫 번째 요소에 포인터를 할당합니다. 이미 정의 된 함수에 포인터를 전달할 수 있습니다. 문자열로 쓰여진 숫자를 변환합니다 (strtoint 함수에 전달 된 지정된 기준으로).)를 정수 값으로 변환합니다.snprinf()를 사용하면 각 연결된 문자열 끝에 null 바이트를 고려해야합니까?
내 가장 중요한 질문은 모든 문자열 끝에 연결된 null 바이트를 연결해야한다는 것인가? 둘째로이 방법이 효과가 있습니까?
'6 + 6 + 6 + 16 = 34'이다 = str [35] = "";', 그러나 당신은 각 부분의 0 바이트. 결과의 값만. –
기계 opcode 데이터 안에 null 문자에 대해 더 걱정할 것입니다. 또한 다양한 6 비트 필드를 팩킹한다는 의미입니까? 'snprintf()'에는 그 라인을 따라 무엇인가하는 것이 없습니다. –
죄송합니다. 레지스터 번호는 5 비트가 아니라 6 비트입니다. – wsmccusker