在ECX寄存器中存储值并使用低位寄存器CL移位该值?

时间:2015-11-03 01:57:01

标签: assembly x86

所以我将一个变量存储到寄存器ECX中,并希望使用'shrl%cl,%eax'将寄存器EAX中的值移位存储在ECX中的变量。我试过这个,但没有发生转变。我是否需要将变量存储在CL寄存器中,如果是这样,我将如何执行此操作,因为'movl variable,%cl'对我不起作用。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

那应该有效。你忘了提供完全可重复的测试用例,所以这是我的:

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位。