8

谁能告诉我以下的含义:

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)

4

1 回答 1

13

它执行两个操作数的按位与(0x10AND 0x8(%eax)(即位于 + 0x8 指向的地址的字节的值%eax)。两个操作数都没有改变,但是,指令改变了标志,最重要的是 ZF如果 AND 的结果为零,则标志为 1,否则为 0。jne如果 ZF 等于 0,则执行跳转。

于 2013-07-17T11:13:17.153 回答