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