ARM处理器的位操作与高级乘法指令解析
1. ARM的桶形移位器与位操作概述
ARM处理器内部有一个名为“桶形移位器”的机制,它可以将一个字中的位向左或向右移动。与大多数微处理器不同,ARM没有独立的移位指令,而是将移位操作作为其他指令的一部分。这种位移动操作非常重要,因为向左或向右移动位可以快速实现数字的乘法或除法。
ARM支持三种类型的移位操作:逻辑移位、算术移位和循环移位。其中,循环移位没有算术功能,仅用于移动位模式。以下是可用的六种位移动指令:
| 助记符 | 含义 |
| ---- | ---- |
| LSL | 逻辑左移 |
| LSR | 逻辑右移 |
| ASL | 算术左移 |
| ASR | 算术右移 |
| ROR | 循环右移 |
| RRX | 带扩展的循环右移 |
虽然桶形移位器在移位和循环移位操作时处于工作状态,但实际上其操作对用户是透明的。
2. 逻辑移位操作
逻辑移位操作通过将数字向左或向右移动一位,可以实现数字的翻倍或减半。通过增加逻辑移位的次数,可以相应地实现数字的乘法和除法。
2.1 逻辑左移(LSL)
逻辑左移时,最显著位(b31)会移出并进入进位标志(Carry flag),而b0移位到b1时留下的空位会被填充为0。例如,单字节二进制值00010001(十进制为17),执行一次逻辑左移(LSL #1)后得到00100010(十进制为34),实现了数字的翻倍。
在ARM中,使用四字节数据,整个字会以这种方式向左移位。最高位(位31)移出后会进入进位标志
超级会员免费看
订阅专栏 解锁全文

840

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



