【发布时间】:2013-04-16 04:37:16
【问题描述】:
以下是代码:
.text
.ent main
.type main, @function
main:
.frame $fp,24,$31 # vars= 8, regs= 1/0, args= 0, gp= 8
addiu $sp,$sp,-24
sw $fp,20($sp)
move $fp,$sp
li $2,1 # 0x1
sw $2,12($fp)
li $2,1 # 0x1
sw $2,8($fp)
# now print -------------------------------------
li $2,1
li $a0,10
syscall
move $2,$0
move $sp,$fp
lw $fp,20($sp)
addiu $sp,$sp,24
j $31
nop
我是如何生成这个的——通过编写一个程序:
int main(){
int i = 1;
}
然后自己简单地添加了系统调用语句。我不确定这是对还是错。
【问题讨论】:
-
它是否按预期工作?否则,您将不得不指定您尝试编译/运行此代码的环境,以及您遇到的错误。
-
我的意思是,它可以正确编译并且运行没有任何错误。它不做的就是打印该死的东西!
-
你在运行什么? SPIM/火星?如果您运行的程序只打印一个整数而什么都不做(即没有从编译器获得的堆栈帧设置代码)怎么办?
标签: mips system-calls