Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly x86 cmpl和jne_Assembly_X86_Att - Fatal编程技术网

Assembly x86 cmpl和jne

Assembly x86 cmpl和jne,assembly,x86,att,Assembly,X86,Att,我正在跟踪某个任务的x86代码,我想知道“cmpl”到底做什么,以及如何预测是否满足“jne” 80484bf: 83 7d f0 07 cmpl $0x7,-0x10(%ebp) 80484c3: 75 16 jne 80484db 从$0x7中减去-0x10(%ebp)并修改标志:PF SF ZF的AF CF 如果-0x10(%ebp)处的内存等于立即0x7,则设置标志ZF。这低于EBP,所以如果这是使用EB

我正在跟踪某个任务的x86代码,我想知道“cmpl”到底做什么,以及如何预测是否满足“jne”

80484bf:    83 7d f0 07             cmpl   $0x7,-0x10(%ebp)
80484c3:    75 16                   jne    80484db
从$0x7中减去-0x10(%ebp)并修改标志:PF SF ZF的AF CF

  • 如果-0x10(%ebp)处的内存等于立即0x7,则设置标志ZF。这低于EBP,所以如果这是使用EBP作为帧指针的未优化构建,那么它可能是一个局部变量
  • jne 80484db表示如果两个比较的数字不同(ZF=0),则跳到80484db
  • 总而言之,您的代码相当于:

    compare A to 7
    jump to 0x80484db if they are different.
    

    顺便说一句:这是AT&T的语法。非常感谢。如果-0x10(%ebp)减去$0x7不等于零,那么ZF设置为0?还是相反?不客气。是,如果-0x10(%ebp)减去$0x7不相等,则ZF设置为0