谁能告诉我以下的含义:
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)
Run Code Online (Sandbox Code Playgroud)
是什么意思testb $0x10,0x8(%eax)?
Jus*_*Sid 10
它执行两个操作数的按位AND(0x10AND 0x8(%eax)(这是位于%eax+ 0x8 指向的地址的字节值).两个操作数都没有改变,但是,指令改变了标志,最重要的是ZF如果AND的结果为零,则标记为1,否则为0.jne如果ZF等于0,则执行跳转.