我有这段代码:
void test(int x)
{
cout<<x;
double y=x+4.0;
cout<<y;
}
void main ()
{
test(7); // call the test in main
}
在MIPS中: 在我将参数x的值放在0($ fp)的堆栈中并跳转到test:
之后lw $a0,0($fp) // load value of x and print it
li $v0,1
syscall
lw $t1,0($fp)
sw $t1,0($sp) // put the value of x in stack and point it by $sp
li.d $f0,4.0
s.d $f0,4($sp) // put the value 4.0 in stack and point it by $sp
l.d $f0,0($sp)
l.d $f2,4($sp)
add.d $f4,$f0,$f2
s.d $f4,8($sp) // put the result of add
l.d $f12,8($sp) // print the value of y
li $v0,3
syscall
我的问题是QTSPIM中y的结果是4 ....问题因为我在双重寄存器中加载一个整数值...我怎么能解决这个问题?
答案 0 :(得分:1)
您需要将整数值加载到fp寄存器中,然后将其转换为浮点格式。你有一个8字节的加载(它将加载你的4个字节的值,加上接下来的4个字节,无论它们是什么),所以你可能想要改变它,然后做一个cvt:
l.w $f0,0($fp)
cvt.d.w $f0,$f0