2014-03-28 5 views
-1

이 x86 어셈블리 언어 라인의 기능을 결정하는 데 도움이 필요합니다. 2 번째 lea 후에 % eax는 항상 5가되고 % ebx는 4가됩니까? 또한 추가 및 비교가 무엇인지 잘 모르겠습니다. 어떤 도움을 주셔서 감사합니다.x86 어셈블리 언어 사용

 mov $0x5,%eax 
     lea -0x20(%ebp),%esi 
     lea -0x1(%eax),%ebx 
     add 0x4(%esi,%ebx,4),%eax 
     cmp %eax,(%esi,%ebx,4) 
     je  0x8048dce 

답변

2
mov $0x5,%eax    - sets eax to 5 
lea -0x20(%ebp),%esi  - loads the dword value at ebp-0x20 into esi 
lea -0x1(%eax),%ebx  - sets ebx to the value of eax-1 (i.e. 4) 
add 0x4(%esi,%ebx,4),%eax - adds the dword value at esi+ebx*4+4 to eax 
cmp %eax,(%esi,%ebx,4) - compares eax to the dword value at esi+ebx*4 
je  0x8048dce    - branches if they are equal 
+0

흠 ... 레아 EAX, [EBP + 5]''CMP [EBP - 4] '동등한 것 같다 eax'''... JE. 꽤 흥미 롭습니다. – Powerslave