将值存储在ECX寄存器中并使用较低的寄存器CL来移位该值?
问题描述:
因此,我将一个变量存储到寄存器ECX中,并希望使用'shrl%cl,%eax'将寄存器EAX中的值移入ECX中存储的变量值。我尝试过,但没有发生转变。我是否需要将变量存储在CL寄存器中,如果是这样,我该怎么做,因为'movl变量,%cl'不适用于我。谢谢您的帮助!将值存储在ECX寄存器中并使用较低的寄存器CL来移位该值?
答
这应该有效。你忘了提供完全可重复的测试案例,所以这里是我的:
1 movl $3, %ecx
(gdb) si
2 movl $0xaaaaaaaa, %eax
(gdb)
3 shrl %cl, %eax
(gdb)
4 nop
(gdb) p/x $eax
$1 = 0x15555555
(gdb) p/x 0xaaaaaaaa >> 3
$2 = 0x15555555
还要注意,移位计数被屏蔽到5位。
+0
谢谢。我试着将变量输入到ECX中,并用%cl转换,并且工作正常。该计划似乎有一个不同的问题,然后。 –
这应该有效。 – Jester
对于'movl变量,%cl'部分,我收到错误'%cl不允许movl' –
确实这是不允许的。本来应该工作的是你的原始代码。否则,你也可以使用'movb变量,%cl'。 – Jester