【问题标题】:Can BR replace JSR to a certain extent?(LC-3)BR能否在一定程度上替代JSR?(LC-3)
【发布时间】:2019-07-02 14:02:48
【问题描述】:

我想如果我把BR后面的指令地址放到R7中,然后跳转到子程序的地址。在某种程度上只是JSR吗?我想问一下BR和JSR有什么区别这使它们与众不同。

【问题讨论】:

  • 有没有办法在R7中存储PC+1?

标签: lc3


【解决方案1】:

我想问一下 BR 和 JSR 之间的区别是什么让它们与众不同。

JSR 设置 R7 指向 JSR 之后的指令。这就是 BR 与 JSR 的不同之处。

(还有一个小区别。JSR 的范围要长得多,因为它使用 11 位偏移量而不是 9 位偏移量,这让它可以到达更远 4 倍的标签。)

BR能在一定程度上替代JSR吗?

是的。如果由于某种原因您不能使用 JSR,您可以改用 BR 来解决它。

以下是使用 JSR 调用子例程的方法:

main         JSR subroutine
             ; back from subroutine

subroutine   ; do something
             ; ...
             RET

这是使用 BR/LEA 的等效代码:

main         LEA R7, return
             BR subroutine
return       ; back from subroutine

subroutine   ; do something
             ; ...
             RET

(注意:这并不完全等价,因为 LEA 设置 CC 寄存器,而 JSR 没有。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多