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 次  |  
        
|   最近记录:  |