0
因此,我將一個變量存儲到寄存器ECX中,並希望使用'shrl%cl,%eax'將寄存器EAX中的值移入ECX中存儲的變量值。我嘗試過,但沒有發生轉變。我是否需要將變量存儲在CL寄存器中,如果是這樣,我該怎麼做,因爲'movl變量,%cl'不適用於我。謝謝您的幫助!將值存儲在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位。
謝謝。我試着將變量輸入到ECX中,並用%cl轉換,並且工作正常。該計劃似乎有一個不同的問題,然後。 –
這應該有效。 – Jester
對於'movl變量,%cl'部分,我收到錯誤'%cl不允許movl' –
確實這是不允許的。本來應該工作的是你的原始代碼。否則,你也可以使用'movb變量,%cl'。 – Jester