您的位置 首页 元件

第1天-ARM汇编指令B/BL

第1天-ARM汇编指令B:分支(Branch)B{条件}地址>B是最简单的分支。一旦遇到一个B指令,ARM处理器将立即跳转到给定的地址,从那里继

第1天-ARM汇编指令

B : 分支

(Branch)

B{条件} <地址>

B是最简略的分支。一旦遇到一个B指令,ARM 处理器将当即跳转到给定的地址,从那里持续履行。留意存储在分支指令中的实践的值是相对当时的 R15 的值的一个偏移量;而不是一个肯定地址。它的值由汇编器来核算,它是 24 位有符号数,左移两位后有符号扩展为 32 位,表明的有用偏移为 26 位(+/- 32 M)。

在其他处理器上,你或许常常见到这样的指令:

OPT 1 LDA &70 CMP #0 BEQ Zero STA &72 .Zero RTS

(取自 Acorn Electron User Guide issue 1 page 213)

在 ARM 处理器上,它们将变成下面这些东西:

OPT 1 ADR R1, #&70 LDR R0, [R1] CMP #0 BEQ Zero STR R0, [R1, #2] .Zero MOV PC, R14

这不是一个很好的比如,但你能够设想怎么更好的去条件履行而不是分支。另一方面,假如你有大段的代码或许你的代码运用状况标志,那么你能够运用条件履行来完成各类分支: 这样一个单一的简略条件履行指令能够代替在其他处理器中存在的所有这些分支和跳转指令。

OPT 1 ADR R1, #&70 LDR R0, [R1] CMP R0, #0 STRNE R0, [R1, #2] MOV PC, R14

BL : 带衔接的分支

(Branch withLink)

BL{条件} <地址>

BL是另一个分支指令。就在分支之前,在寄存器 14 中装载上 R15 的内容。你能够从头装载 R14 到 R15 中来返回到在这个分支之后的那个指令,它是子例程的一个根本但强力的完成。它的作用在屏幕装载器 2 (比如 4)中得以很好的展示…

.load_new_format BL switch_screen_mode BL get_screen_info BL load_palette .new_loop MOV R1, R5 BL read_byte CMP R0, #255 BLEQ read_loop STRB R0, [R2, #1]!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/258525.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部