将此程序集更改为C时出现问题

时间:2013-04-03 02:39:09

标签: assembly x86

...
.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进行逆向工程的问题,我现在正在考虑的是它是一段时间,但我得到的表达似乎并不正确,如果不使用变量,它就会很长。我想在shrl $31, %edx,注册edx应该等于((B-A)+1)>>31?我离开了吗?

1 个答案:

答案 0 :(得分:1)

不,那是对的。