终于把编译器的a+b做出来了 TAT

Jimmy 发表于 2007-08-28 07:37:18

真没面子。。到现在才做出来OTZ
以后我一定要把整个程序都贴出来…哼哼(我这算造福后代么)
以下是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="

接下来的任务就是要实现求最大公因数了…争取今天搞定掉 =。=

关键词(Tag): tiger 编译器 acm班 compiler spim

曾经的这一天...


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定