Rob*_*ert 8 x86 assembly machine-code
我有一小段(x86)程序集,我试图找出它的作用.
...
6: 81 ec 00 01 00 00 sub $0x100, %esp
c: 31 c9 xor %ecx , %ecx
e: 88 0c 0c mov %cl , (%esp, %ecx, 1)
11: fe c1 inc %cl
13: 75 f9 jne 0xe
....
Run Code Online (Sandbox Code Playgroud)
它看起来像循环,直到"JNE"评估为false,即零标志= 0.(可能是它将数字1,2,3 ......放入堆栈?)
从我对程序集的简短调查(我刚接触到它)接缝你通过做一个比较操作(CMP)设置零标志,但我没有看到比较操作.
那么,它会在什么条件下突破这个循环呢?
Ste*_*non 12
inc如果cl增量后的值为零,则设置ZF .你的循环是这样做的:
sub $0x100, %esp // unsigned char array[256];
xor %ecx , %ecx // unsigned char cl = 0;
mov %cl , (%esp, %ecx, 1) // e: array[cl] = cl;
inc %cl // cl += 1;
jne 0xe // if (cl != 0) goto e;
Run Code Online (Sandbox Code Playgroud)
当循环cl从255递增并且回绕到0时,循环终止,设置ZF.
| 归档时间: |
|
| 查看次数: |
20166 次 |
| 最近记录: |