2011-11-28 2 views
7

MIPS에서 la 명령어는 luiori으로 변환됩니다. 그러나 MARS Simulator는 전혀 그런 것처럼 보이지 않습니다. 나는 다음과 같은 기계 코드 덤프 경우 :MIPS "la"의사 지시문

.text 
    la $a0, array 
    la $a1, array_size 
    lw $a1, 0($a1) 

.data 
    array: .word 0:10 
    array_size: .word 10 
    message: .asciiz "The sum of numbers in array is: " 

를 내가 얻을 : 분명히

00100000000001000010000000000000 
00100000000001010010000000101000 
10001100101001010000000000000000 

된다. 하나의 명령으로 la을 덤핑하고 있습니다. MARS는 무엇을합니까? laluiori으로 해석하도록하려면 어떻게해야합니까?

은 어셈블러 addi $<dest>, $0, <value> 이러한 la의 컴파일되어

답변

8

은 여기에서 일어나고있는 것은, 감사합니다. 2- 명령어 시퀀스는 16 비트 즉시 표현할 수없는 값에만 필요합니다. 여기에 사용하는 값은 0x20000x2028처럼 보이므로 단일 명령에 맞습니다.

가 어떻게 그것을 luiorila를 해석 할 수 있습니까?

더 큰 상수를로드하십시오. :) 어셈블러에는 불필요한 경우에도 전체 시퀀스를 강제로 사용할 수있는 옵션이있을 수 있습니다.