我正在分析一系列x86指令,并对以下代码感到困惑:
135328495: sbb edx, edx
135328497: neg edx
135328499: test edx, edx
135328503: jz 0x810f31c
据我所知,sbb等于des = des - (src + CF),换句话说,第一指令以某种方式将-CF到edx。然后将其negtive -CF转化为CF,并且test是否CF等于零??
但请注意jz检查标志ZF,而不是CF!那么基本上上面的代码序列试图做什么?这是一个合法的x86指令序列,由g++version产生4.6.3。