testb指令的含义是什么?

时间:2013-07-17 11:02:06

标签: gdb

任何人都可以告诉我以下内容的含义:

gdb> disas 0x080ed5af 

0x080ed5ac <func1+205>:        mov    0x8(%eax),%eax

0x080ed5af <func1+208>:        testb  $0x10,0x8(%eax)

0x080ed5b3 <func1+212>:        jne    0x80ed604 <dapriv_disk_op+293>

0x080ed5b5 <func1+214>:        mov    %edi,(%esp)

testb $0x10,0x8(%eax)是什么意思?

1 个答案:

答案 0 :(得分:9)

它对两个操作数(0x10 AND 0x8(%eax)执行按位AND(这是位于%eax + 0x8指向的地址处的字节值)。然而,操作数被改变,指令改变了标志,最重要的是,如果AND的结果为零,则ZF标志为1,否则为0。如果ZF等于,则以下jne执行跳转0