...
.L5:
movl 8(%ebp), %eax # A(param) is at ebp + 8
movl 12(%ebp), %edx # B(param) is at ebp + 12
movl %edx, %ecx
subl %eax, %ecx
movl %ecx, %eax
addl $1, %eax
movl %eax, %edx
shrl $31, %edx
leal (%edx,%eax), %eax
sarl %eax
addl %eax, 8(%ebp)
movl 8(%ebp), %eax
cmpl 12(%ebp), %eax
jge .L5
我在逆向工程这个 x86 时遇到问题,我现在在想的是它是一个 do-while,但我得到的表达式似乎不正确,并且不使用变量它很长。我认为shrl $31, %edx
,寄存器edx
应该相等((B-A)+1)>>31
?我走远了吗?