ARM中移位的解释

在学ARM基本寻址方式的时候有学到寄存器移位寻址,现介绍一下移位的规则,顺便帮助自己记忆。

ARM中可采用的移位操作有一下几种:

LSL:逻辑左移(Logical Shift Left)。寄存器中字的低端空出的位补0.

如:111···101 逻辑左移一位变成 11···1010

LSR:逻辑右移(Logical Shift Right)。寄存器中字的高端空出的位补0.

如:110···100 逻辑右移一位变成 0110···10

ASR:算术右移(Arithmetic Shift Right)。算数移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。若原操作数位正数,则字的高端空出的位补0,。若源操作数为负数,则字的高端空出的位补1.

如:101···101 算术右移变成 1101···10

ROR:循环右移(ROtate Right)。从字的最低端移除的位填入字的高端空出的位。

如:101···110 循环右移变成 0101···11

RRX:扩展为1的循环右移(Rotate Right eXtended by 1 place)。操作数右移1位,空位(位[31])用原C标志位(即NZCV中的C位)值填充。

如:101···110(C位为0)扩展循环右移之后为 1101···11

你可能感兴趣的:(ARM中移位的解释)