For the C code:
1 void cond(int a, int *p) 2 { 3 if (p && a > 0) // Note: > has higher precedence 4 *p += a; 5 }
this IA32 assembly code is generated:
1 movl 8(%ebp),%edx 2 movl 12(%ebp),%eax 3 testl %eax,%eax 4 je .L3 5 testl %edx,%edx 6 jle .L3 7 addl %edx,(%eax) 8 .L3:
-
Write an equivalent C "goto" version.
- Why are there 2 assembly jump statements for the single C 'if' statement?