首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS32程序集beq指令解释

MIPS32程序集beq指令解释
EN

Stack Overflow用户
提问于 2016-07-20 05:50:34
回答 1查看 2.2K关注 0票数 0

有人能解释一下为什么下面这条装配线有意义吗?

代码语言:javascript
复制
beq $0, $0, 1

注意,$0是指始终值为0的寄存器。所以我们是说,如果$0 = $0,那么转到PC +4+1,然后转到下一个指令。

我的困惑来自于beq指令的直接字段,即1。这是否意味着我们将处理PC +5?当访问内存时,MIPS不需要对齐吗?所有内存位置都必须被4整除吗?

注意,书中说这条指令只是跳过了下一条指令。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-20 06:12:15

beq $t, $s, offset的语义是

代码语言:javascript
复制
if ($t == $s) 
    PC = PC + 4 + 4 * offset;
else 
    PC = PC + 4

简单地说,PC在执行指令时总是提前4位,并且假定立即丢失了较低的2位,因为它们总是为零,可以用shift (offset * 4 = offset << 2)重新引入。

beq $0, $0, 1只需跳过下一条指令,因为它将PC = PC + 8设置为重言式。

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

https://stackoverflow.com/questions/38473218

复制
相关文章

相似问题

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