ARM----- 移位操作(LSL、ASL、LSR、ASR、ROR、RRX)

来源:互联网 发布:golang mobile 编辑:程序博客网 时间:2024/04/27 02:23

前言

移位操作在ARM指令集中不作为单独的命令使用,它在指令格式中是一个字段。

(1)、LSL —- 逻辑左移(Logical Shift Left)与 ASL —- 算术左移 (Arithmetic Shift Left)

逻辑左移与算术左移的操作是一样的,都是将操作数向左移位,低位补零,移除的高位进行丢弃。

MOV  R0, #5MOV  R1, R0, LSL #2

上述命令,就是将5存储到R0寄存器上(R0 = 5), 然后将R0逻辑左移2位后传送到R1寄存器中。
十进制5的二进制数值是0101,进行逻辑左移2位就是0001_0100, 也就是十进制中的20。其实每逻辑左移1位就相当于原数值进行乘2操作,5逻辑左移2位其实就是5 x 2^2 = 20。下方是该操作的原理图

(2)、LSR —- 逻辑右移(Logical Shift Right)

逻辑右移与逻辑左移是相对的,逻辑右移其实就是往右移位,左边补零

(3)、ASR —- 算术右移(Arithmetic Shift Right)

(4)、ROR —- 循环右移(Rotate Right)

原创粉丝点击