으로 변환합니다. 지금까지이 코드를 번역했는데 이해할 수없는 것은 16 비트 직접 주소의 양을 계산하는 방법입니다.다음 기계 언어 코드 (0x2237FFF1)를 MIPS 어셈블리
0x2237FFF1
진
0010 0010 0011 0111 1111 1111 1111 0001
지금은 오피 코드 (001000)를 읽고 있어요으로
하고 I 형과
가 지금은에 진을 그룹화하고있어 addi
명령 것을 알고 I 형 명령어
op rs rt imm
001000 10001 10111 1111111111110001
8 17 23 ?
MIPS 참조 시트 그리고 명령이
addi $s7,$s1,????
내가 여기 스택을 해요 어떻게 genral에서 16 비트 즉시 주소를 확인하는 방법을 모르는해야합니다 것을 알아 냈다. 당신이
.word 0x2237FFF1
후 조립 및 분해 당신은 도구를 수 있도록함으로써 시작할 수 있습니다
당신은 이미 즉각적인를 발견, 그것은'1111111111110001'을합니다. 바이너리에서 변환 할 수 있습니까? immediates는 부호가 확장되어 있으므로 실제로는 십진수로 '-15'입니다. – Jester
* "즉각적인 주소"*는 대개 의심 스럽습니다. Assembly에서는 대개 직접적으로 (즉, 명령어에서 직접 인코딩 한 값인 '0xFFF1' => sign to 32b ='0xFFFFFFF1' = '-15') , 또는 * 주소 *를 사용할 수있는 어드레싱 모드 중 하나에서, 즉각적인 모드는'pc + offset'이고,이 경우'pc-15' 주소입니다. 나는 일반적인 정보로이 글을 쓰고 있는데, MIPS 레퍼런스 가이드에서 특정 opcode를 검사하지 않았으므로, MIPS에 그러한 주소 모드가 있는지 알지 못한다. 그러나 어쨌든 당신은 직접적인 변형을 가지고 있다고 생각한다. – Ped7g
또는 절대 주소 지정조차도 작업 할 메모리의 절대 주소가 명령어에 포함되어있는 경우와 같이 즉각적인 인코딩과 비슷하지만 일반적으로 RISC와 유사한 프로세서에서는 "워드"크기의 고정 크기 명령어와 절대 주소는 일반적으로 그것을 정의하기 위해 전체 "단어"를 요구합니다. 따라서 어떤 주소 지정이 관련되면 부호 확장 된 오프셋으로 값을 사용하여 99 % 상대 주소가됩니다. – Ped7g