1
...
.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?我走远了吗?

4

1 回答 1

1

不,这是正确的。     

于 2013-04-03T02:50:38.827 回答