Arm 带LSL进位标志的MOV

Arm 带LSL进位标志的MOV,arm,Arm,我正在学习《Arm系统开发人员指南》,我想知道书中的一个例子: cpsr = nzcvqiFt_USER // capital indicates flag is set r0 = 0x00000000 r1 = 0x80000004 MOVS r0, r1, LSL #1 cpsr = nzCvqiFt_USER // capital indicates flag is set r0 = 0x00000008 r1 = 0x80000004 据我所知,8已结转,C标志是基于逻辑左

我正在学习《Arm系统开发人员指南》,我想知道书中的一个例子:

cpsr = nzcvqiFt_USER   // capital indicates flag is set
r0 = 0x00000000
r1 = 0x80000004

MOVS r0, r1, LSL #1

cpsr = nzCvqiFt_USER   // capital indicates flag is set
r0 = 0x00000008
r1 = 0x80000004

据我所知,8已结转,C标志是基于逻辑左移而设置的。为什么r1中的4也没有移位?MOVS操作是否仅移动所携带的8?

,因为您的结果最终为r0

因此,所发生的是:

carry = r1[31] = 1
r0    = r1 << 1
进位=r1[31]=1
r0=r1第三位应为2^2=4,第四位为2^3=8。似乎