Was ist die Bedeutung des testb-Anweisung?
Kann irgend jemand mir sagen die Bedeutung die folgende:
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)
Was ist der Sinn des testb $0x10,0x8(%eax)
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Er führt eine bitweise UND-Verknüpfung der beiden Operanden (
0x10
UND0x8(%eax)
(dies ist der Wert des byte befindet sich unter der Adresse verweist%eax
+ 0x8). Weder der Operanden verändert wird, jedoch der Befehl verändert die flags, vor allem die ZF-flag auf 1, wenn das Ergebnis der UND gleich null ist, oder 0 andernfalls. Die folgendenjne
führt einen Sprung, wenn ZF ist gleich 0.