2010-02-22 4 views
12

나는 기본 주소는 $에서 A0 및 설정 $ t2의 꺼져 메모리에서 값을로드하려면, 내가 할 수없는 이유를 다음MIPS 부하 단어 구문

lw $s2, $a1($t2) 

는 그래서 무엇인가 위의 표현식과 동일합니까?

답변

14

그런 일을 지원하는 MIPS 명령어 인코딩이 없기 때문에 그렇게 할 수 없습니다. 당신은 또한 직접 수행해야합니다

add $a2, $a1, $t2 
lw $s2, 0($a2) 

lw 명령 인코딩은 다음과 같습니다

sssss 소스 레지스터 번호가
1000 11ss ssst tttt iiii iiii iiii iiii 

, ttttt 대상 레지스터 번호이며, iiiiiiiiiiiiiiii는 즉각적 . 두 개의 레지스터를 사용하여 메모리 주소를 생성하는 인코딩 (대체 명령 인코딩이 없음)에는 여유가 없습니다. 위의 예에서 인코딩 된 얻을 것입니다 특정 기계 명령어는 다음과 같습니다

1000 1100 1101 0010 0000 0000 0000 0000 

바로이 0이기 때문에, $s218 등록하고 $a26를 등록 할 수 있습니다.

+2

나는 밉스를 아주 좋아한다. – Polaris878

+1

@ Polaris878, Ray! –