C代码开始的形式如下:
long test (long x, long y){ long val =1; if 2{ if 3 val =4; else val =5; } else if 6 val =7; return val; }
GCC会产生如下汇编代码:
long test (long x,long y) x in %rdi,y in %rsi test: leaq 0(,%rdi,8), %rax testq %rsi, %rsi jle .L2 movq %rsi, %rax subq %rdi, %rax movq %rdi, %rax andq %rsi, %rax cmpq %rsi, %rdi cmovge %rdx, %rax ret .L2: addq %rsi, %rdi cmpq %-2, %rsi cmovle %rdi, %rax ret
填补c代码中缺失的表达式。