首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PCSpim仿真中使用jump

如何在PCSpim仿真中使用jump
EN

Stack Overflow用户
提问于 2013-06-06 02:01:44
回答 1查看 113关注 0票数 0

我写了这段代码(这只是其中的一部分):

代码语言:javascript
复制
beq $t4 ,$0 ,__less3
    add $s2,$t3,$0 # s2=t3
    add $s3,$t2,$0 # s3=t2
    j __next1

 __less3:
    add $s2,$t2,$0 # s2=t2
    add $s3,$t3,$0 # s3=t3
 __next1:
    slt $t4, $t1, $t0 # t4=(t1<t0)
    beq $t4 ,$0 ,__les1sk

问题是,当模拟到达第4行并需要执行跳转时,它会执行第7行(下一个命令),然后才跳转到第10行。我之所以知道这一点,是因为该寄存器的$s2更改为$t2,而不是保留$t3的值。

EN

回答 1

Stack Overflow用户

发布于 2013-06-06 02:07:49

PCSpim模拟的处理器MIPS采用“延迟分支”:它执行紧跟在分支之后的指令,然后转移到跳转目标(因此“延迟”跳转)。这是一个效率指标;因为处理器已经完成了“额外”指令的大部分工作,所以这些工作不会被浪费。编译器在生成代码时会考虑到这一点。

我相信在模拟器中有一个禁用延迟分支的选项。

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

https://stackoverflow.com/questions/16946819

复制
相关文章

相似问题

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