ARM 64 位汇编:数据加载与算术运算详解
1. 移位和循环移位基础
在汇编编程中,移位和循环移位操作是常见的位操作。主要有以下四种情况:
- 逻辑左移(Logical shift left)
- 逻辑右移(Logical shift right)
- 算术右移(Arithmetic shift right)
- 循环右移(Rotate right)
逻辑左移是将位向左移动指定的位数,右边补零,最后移出的位进入进位标志。逻辑右移则是将位向右移动,左边补零,最后移出的位进入进位标志。算术右移用于处理有符号整数,当数字为负时,左边补 1;为正时,左边补 0,以保留符号位。循环右移与普通移位不同,移出的位会从另一端重新出现。
2. 寄存器加载
在汇编中,将值加载到寄存器有多种方式。ARM 工程师为了减少指令数量,采用了指令别名(Instruction Aliases)的技术。例如,在之前的 Hello World 示例程序中使用的 MOV 指令并非真正的 ARM 汇编指令,而是一个别名。汇编器会根据用户的需求找到真正的 ARM 指令来完成任务。
ADD X0, XZR, X1
这条指令将寄存器 X1 的内容加到零寄存器,并将结果放入 X0,本质上是将 X1 移动到 X0,因此不需要 MOV X0, X1 这样的指令。实际上, MOV X0, X1 会被转换为 ORR X0, XZR, X1 。
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



