It may also be helpful in examining executable files to be aware of alternate code the gcc compiler will occasionally use instead of what may be expected.
Some easy ones:
Purpose | Alternate | Expected |
---|---|---|
Set %eax to 0 | xor %eax, %eax | movl $0, %eax |
Check if %edi is 0 and jump to L1 if it is |
test %edi, %edi je L1 |
cmpl $0, %edi je L1 |