movl %eax, %edx
sarl $31, %edx
shrl $31, %edx
我有上面的x86-64代码。我正在解释这意味着sarl会将edx(相当于eax)的值向右移位算术,这意味着最高有效位将从寄存器中填充32位中的31位,从右边填充。
然后,shrl用0填充31个最高有效位,在edx寄存器中留下1个单独的位。该位将读取' 0' 0如果eax是积极的,那么' 1'如果eax是否定的。
这是正确的解释,还是我错误地理解了这个概念?