ARM 64 位汇编语言中的数据加载与运算
1. 移位和循环移位基础
在 ARM 汇编中,移位和循环移位操作是常见且重要的操作,主要有以下四种情况:
- 逻辑左移(Logical Shift Left) :将二进制位向左移动指定的位数,右边空出的位用 0 填充,最后移出的位进入进位标志位。
- 逻辑右移(Logical Shift Right) :把二进制位向右移动指定的位数,左边空出的位用 0 填充,最后移出的位进入进位标志位。
- 算术右移(Arithmetic Shift Right) :当处理负数时,逻辑右移会使负数变为正数,而算术右移可以保留符号位。若数字为负,左边移入 1;若为正,左边移入 0,适用于有符号整数的移位操作。
- 循环右移(Rotate Right) :类似于右移操作,但移出的位不会丢失,而是从左边重新进入,形成循环。
2. 寄存器加载
在 ARM 汇编中,有多种方式可以将值加载到寄存器中。
2.1 指令别名
在 ARM 汇编里,像 MOV 这样的指令其实是别名,并非真正的 ARM 汇编指令。例如 ADD X0, XZR, X1 这条指令,它将寄存器 X1 的内容加到零寄存器上,并将结果存于 X0,本质上实现了将 X1 移动到 X0 的功能,所以不需要 MOV X0, X1 这样的指令。实际上, MOV X0, X1 会被翻译成
超级会员免费看
订阅专栏 解锁全文
2252

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



