2017-01-26 25 views
0

Я знаю la в MIPS ломается до lui и ori, но каковы аргументы для этих инструкций?Как инструкция la переведена в MIPS?

Я рассмотрел этот вопрос здесь MIPS Pseudo istructions, replacements, но получается ли в результате lui 4097?

Рассмотрим следующий пример:

 .data 
_a: .space 4 
     .text 
main: la  $s0,_a 

ли, что переводятся на это?

lui $at,4097 
ori $s0,$at,0 

Спасибо!

ответ

0

lui загружает верхние 16 бит адреса, а ori загружает младшие 16 бит адреса. Адрес может быть любым 32-битным значением, поэтому lui обычно не загружается 4097.

1

4097 десятичный знак 0x1001. Это верхние 16 бит 0x10010000.

Это адрес загрузки по умолчанию для начала сегмента .data в симуляторе mars.

Если вы сделали la $s0,main, то lui будет lui $at,0x0040, потому что начальный адрес по умолчанию для .text является 0x00400000.

Чтобы увидеть разницу, попробуйте эту программу:

 .data 
_a: .space 100000 
_b: .space 4 
     .text 
main: la  $s0,_b