ARM文档翻译(七)----指令篇(五)

B.cond

条件分支

语法

B.cond Label

注释

cond

标准条件之一。

Label

条件满足时跳转的程序标签。它与该指令之间的偏移量,范围为±1MB。

使用

以PC相对偏移量有条件地跳转到标签处。这不是子函数调用或者返回。

B

分支(无条件)。

语法

B Label

注释

Label

无条件跳转的程序分支标签。它与该指令地址之间的偏移量。范围为±128MB。分支可以向前或者向后跳转128MB。

使用

无条件分支跳转到到标签的相对偏移量。这不是子函数调用或返回。

BFC

清除位域,其余位不变。

这条指令是BFM的别称。

等效指令位BFM Wd, WZR, #(-lsb MOD 32), #(width-1)

语法

BFC Wd, #Lsb, #width ;32位

BFC Xd. #Lsb, #width ;64位。

注释

Wd

32位目标通用寄存器。

Lsb

取决于指令

  • 32位通用寄存器

目标寄存器位域起始位。范围为0~31。

  • 64位通用寄存器

目标寄存器位域起始位。范围为0~63。

width

取决于指令

  • 32位通用寄存器

位域的宽度,范围为1 ~ 32-Lsb。

  • 64位通用寄存器

位域的宽度,范围为1 ~ 64-Lsb。

Xd

64位目标通用寄存器。

架构支持

支持Armv8.2及更好版本。

BFI

位域插入。

这条指令是BFM的别称。

这条指令的等效指令是BFM Wd, Wn, #(-lsb MOD 32), #(width-1)

语法

BFI Wd, Wn, #Lsb, #width ;32位

BFI Xd, Xn, #lsb, #width ;64位

注释

Wd

32位目标通用寄存器。

Wn

32位源通用寄存器。

Lsb

取决于指令

  • 32位通用寄存器

目标寄存器位域起始位,范围为0~31。

  • 64位通用寄存器

慕白寄存器位域起始位,范围为0~63。

width

取决于指令

  • 32位通用寄存器

位域的宽度,范围为1 ~ 32-Lsb。

  • 64位通用寄存器

位域的宽度。范围为1 ~ 64-Lsb。

Xd

64位目标通用寄存器。

Xn

64位源通用寄存器。

使用

位域插入将源寄存器中的任意数量的低阶位复制到目标寄存器中任意位置的相同数量的相邻位,而不改变其他位。