| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- --C COMPILER
- int y = 5;
- int fun1(){
- int x = 11;
- return x;
- }
- int main() {
- int x = 4;
- return y * x * fun1();
- }
- parse finished
- ~
- ~
- ~
- int
- =
- y
- 5
- D
- d
- int
- F
- fun1
- ;
- ~
- int
- =
- x
- 11
- return
- x
- D
- d
- int
- F
- main
- ;
- ~
- int
- =
- x
- 4
- return
- *
- *
- y
- x
- apply
- fun1
- y := 5
- func fun1
- x := 11
- ret x
- end fun1
- func main
- x := 4
- $t1 := y * x
- call fun1, $t2
- $t0 := $t1 * $t2
- ret $t0
- end main
- =====
- li $a0, 68
- li $v0, 9
- syscall
- or $fp, $0, $v0
- la $t0, main
- sw $t0, 0($fp)
- sw $0, 4($fp)
- jal main
- j done
- #y := 5
- li $8, 5
- or $16, $0, $8
- #func fun1
- fun1:
- li $a0, 68
- li $v0, 9
- syscall
- sw $fp, 4($v0)
- sw $16, 8($fp)
- or $fp, $0, $v0
- la $t0, fun1
- sw $t0, 0($fp)
- sw $ra, 64($fp)
- #x := 11
- li $9, 11
- or $16, $0, $9
- #ret x
- or $v1, $0, $16
- jr $31
- #end fun1
- #func main
- main:
- li $a0, 68
- li $v0, 9
- syscall
- sw $fp, 4($v0)
- sw $16, 8($fp)
- or $fp, $0, $v0
- la $t0, main
- sw $t0, 0($fp)
- sw $ra, 64($fp)
- #x := 4
- li $10, 4
- or $16, $0, $10
- #$t1 := y * x
- mult $17, $16
- mflo $11
- #call fun1, $t2
- jal fun1
- lw $fp, 4($fp)
- lw $ra, 64($fp)
- lw $16, 8($fp)
- lw $17, 12($fp)
- or $12, $0, $v1
- #$t0 := $t1 * $t2
- mult $11, $12
- mflo $13
- #ret $t0
- or $v1, $0, $13
- jr $31
- #end main
- done:
- ori $v0, $0, 10
- syscall
|