首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spim指令部

Spim指令部
EN

Stack Overflow用户
提问于 2011-09-13 08:35:40
回答 2查看 299关注 0票数 1
代码语言:javascript
复制
[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)

上面是我的spim程序,我很好奇li指令被分成lui和ori,谁能解释一下是怎么回事?

感谢任何人的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-13 08:41:19

li是一条伪指令(即它在处理器上不作为操作码存在)。它总是被扩展成一个'load an‘和一个'or with immediate’指令:

有效:(4096 << 16) || 244

如果数字不大,则跳过lui指令;并且ori将与0寄存器执行或操作。

票数 2
EN

Stack Overflow用户

发布于 2011-09-13 08:42:36

li是立即加载的。但是,您试图加载的值太大,无法放入该指令的即时数据部分。因此,汇编程序将其分成两条指令,每条指令将该值的一半加载到该寄存器的上部和下部。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7395601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档