ARM-Assembly:算术移位/逻辑移位

时间:2013-01-28 15:33:59

标签: assembly arm shift

我有点发现以这两种操作不同的方式发现了。所以我读到算术移位与Logical基本相同,只有差别,它以某种方式保持最高或有符号位。

所以当我在101110上做LSL#2时假设这个二进制文件是无符号的,结果将是:111000并且进位位将在CPSR中设置,对吗?

当我在相同的数字上执行ASL#2时,结果会是什么以及它如何保留有符号位?在上面的二进制文件中ASR#2怎么样?结果会是101011吗?

不幸的是,我只发现了关于算术转换的非常粗略的描述。提前谢谢!

2 个答案:

答案 0 :(得分:3)

我很难理解LSR和ASR之间的真正区别,但希望这张图片可以帮助您理解相同的内容。 在LSR(Logical Shift Right)中,MSB(Most Significant Bit)被替换为0,其中In ASR(Arithematic Shift Right)MSB与移位前的MSB相同。(左移类似) ASR在以双补码表示的有符号值的计算中很有用。

Portrait Result

答案 1 :(得分:0)

您的示例没有多大意义,因为您的数字仅为6位,因此第31位始终为0

ASLLSL的同义词,您可以在official ARM documentation或此ARM reference site中查看轮班操作行为。