首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS - SPIM解析器当前值超出按位ANDI的范围

MIPS - SPIM解析器当前值超出按位ANDI的范围
EN

Stack Overflow用户
提问于 2022-02-19 19:38:14
回答 1查看 102关注 0票数 0

试着用SPIM测试我的程序

spim:(解析器)直接值(-16)超出范围(0 .65535)在文件代码1.a的第56行

代码语言:javascript
复制
  andi $t1, $t0, 0xfffffff0

有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-19 19:49:32

MIPS处理器不能在一条指令中完成这个操作。andi指令是一条I型指令,它包含一个16位的直接指令--而且andi指令零将16位直接扩展到32位,所以它不能保持负数(ori & xori也是零扩展,而addi和其他所有符号都是扩展立即)。

当我们不能在一条指令中完成某件事情时,使用一系列指令。在这种情况下,将立即加载到寄存器中,然后使用and R-Type指令。

FYI,火星模拟器的汇编程序将采用andi $t1, $t0, 0xfffffff0,尽管它把它当作一个伪指令,并将这一行程序集扩展成一个3指令机器代码序列,该代码序列将常量加载到寄存器中(使用两条指令:一条比工作所需的多一条),然后使用该and

显然,Spim不提供特定的伪指令。

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

https://stackoverflow.com/questions/71188529

复制
相关文章

相似问题

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