真相永远只有一个! » 日志 » 终于把编译器的a+b做出来了 TAT
终于把编译器的a+b做出来了 TAT
Jimmy 发表于 2007-08-28 07:37:18
以后我一定要把整个程序都贴出来…哼哼(我这算造福后代么)
以下是tiger和spim程序…
tiger程序:
let
var a := 1
var b := 2
in
print("1+2=");
printi(a+b)
end
生成的spim程序:
.globl main
.text
main:
subu $sp, $sp, 56
L2:
sw $fp,36($sp)
add $a3, $sp, 52
move $fp, $a3
sw $ra,-20($fp)
sw $s8,-56($fp)
sw $s7,-52($fp)
sw $s6,-48($fp)
sw $s5,-44($fp)
sw $s4,-40($fp)
sw $s3,-36($fp)
sw $s2,-32($fp)
sw $s1,-28($fp)
sw $s0,-24($fp)
sw $a0,-4($fp)
li $a3, 1
sw $a3,-8($fp)
li $a3, 2
sw $a3,-12($fp)
lw $a3 -4($fp)
move $a0, $a3
la $s6, L0
move $a1, $s6
jal print
lw $t2 -4($fp)
move $a0, $t2
lw $a3 -8($fp)
lw $s6 -12($fp)
add $a3, $a3, $s6
move $a1, $a3
jal printi
lw $a3 -24($fp)
move $s0, $a3
lw $a3 -28($fp)
move $s1, $a3
lw $a3 -32($fp)
move $s2, $a3
lw $a3 -36($fp)
move $s3, $a3
lw $a3 -40($fp)
move $s4, $a3
lw $a3 -44($fp)
move $s5, $a3
lw $a3 -48($fp)
move $s6, $a3
lw $a3 -52($fp)
move $s7, $a3
lw $a3 -56($fp)
move $s8, $a3
lw $a3 -20($fp)
move $ra, $a3
lw $a3 -16($sp)
move $fp, $a3
j L1
L1:
addu $sp, $sp, 56
jr $ra
printi:
move $a0, $a1
li $v0, 1
syscall
jr $ra
print:
move $a0, $a1
li $v0, 4
syscall
jr $ra
.data
L0:
.asciiz "1+2="
接下来的任务就是要实现求最大公因数了…争取今天搞定掉 =。=
- » 2004年: 无题
