Спим Инструктаж Дивизион - PullRequest
0 голосов
/ 13 сентября 2011
[0x00400000]    0x3c011000  lui $1, 4096                    ; 5: li $t0, 0x100000F4
[0x00400004]    0x342800f4  ori $8, $1, 244
[0x00400008]    0x8d100000  lw $16, 0($8)                   ; 6: lw $s0, 0($t0)

выше - моя спим-программа, мне любопытно, что инструкция li разделена на lui, и может кто-нибудь объяснить, что там происходит?

любая помощь оценена, спасибо !!

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

li - это псевдоинструкция (т. Е. Она не существует в качестве кода операции на процессорах).он всегда расширяется до «немедленной загрузки»;и инструкция «или с немедленной»:

эффективно: (4096 << 16) || 244

Инструкция lui будет пропущена, если число не велико;и ori будет или с регистром 0.

0 голосов
/ 13 сентября 2011

li - немедленная загрузка. Однако значение, которое вы пытаетесь загрузить, слишком велико, чтобы поместиться в раздел непосредственных данных этой инструкции. Поэтому ассемблер разделяет его на две команды, каждая из которых загружает половину этого значения в верхнюю и нижнюю части этого регистра.

...