2spill
Source Code
// MyCC code example
// Gabriel Capella
class Test {
int f;
int h;
public void main() {
int x;
int y;
int z;
x = 51;
y = 50;
z = 49;
print(z);
print(y);
print(x);
}
}







Results
Assembly
# SPILL %1
.globl main
main:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
movq $16, %rax
movq %rax, %rdi
callq malloc@PLT
testq %rax, %rax
jz fail_exit
pushq %rax
callq __LABEL0
popq %rax
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL0:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-16, %rsp
##MovL %0 <- 51
movq $51, %rax
##MoMo %1 <- %0
movq %rax, %rbx
##MovL %9 <- -8
movq $-8, %rax
##MoOp %9 <- %9,%-1
addq %rbp, %rax
##RToM #9 <- %1
movq %rbx, (%rax)
##MovL %2 <- 50
movq $50, %rax
##MoMo %3 <- %2
##MovL %4 <- 49
movq $49, %rbx
##MoMo %5 <- %4
##MoMo %6 <- %5
##Prin %6
pushq %rax ## prepare print call
pushq %rbx ## prepare print call
movq %rbx, %rdi ## print
callq putchar@PLT
popq %rbx
popq %rax
##MoMo %7 <- %3
##Prin %7
pushq %rax ## prepare print call
pushq %rbx ## prepare print call
movq %rax, %rdi ## print
callq putchar@PLT
popq %rbx
popq %rax
##MovL %9 <- -8
movq $-8, %rax
##MoOp %9 <- %9,%-1
addq %rbp, %rax
##MToR %9 <- #9
movq (%rax), %rax
##MoMo %8 <- %9
##Prin %8
pushq %rax ## prepare print call
pushq %rbx ## prepare print call
movq %rax, %rdi ## print
callq putchar@PLT
popq %rbx
popq %rax
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
fail_exit:
movl $1, %eax
popq %rbp
retq
Expected
123
Got
123