从如下形式的C语言代码开始:
long test(long x, long y, long z) {
long val =1;
if 2 {
if 3
val =4;
else
va1=5;
} else if 6
val =7;
return val;
}
GCC产生如下的汇编代码:
long test (long x, long y, long z)
x in %rdi, y in %rsi, z in %rdx
test:
leaq (%rdi,%rsi), %rax
addq %rdx,%rax
cmpq $-3, %rdi
jge .L2
cmpq %rdx, %rsi
jge .L3
movq %rdi, %rax
imulq %rsi, %rax
ret
.L3:
movq %rsi, %rax
imulq %rdx, %rax
ret
.L2:
cmpq $2,%rdi
jle .L4
movq %rdi, %rax
imulq %rdx, %rax
.L4:
rep; ret 填写C代码中缺失的表达式
