Assembly 从内存空间加载浮点值的正确方法是什么?为什么不是';这段代码不会产生预期的结果吗?
我想加载存储在内存位置上的浮点。在这种情况下,它是aSpace、bSpace和one。例如,如果我在请求用户输入之前加载一个,它将正确加载,即“1.0”。尽管如此,如果我在用户输入后加载它,它将作为用户在最后一次输入时的输入加载。事实上,每个加载的浮点都会这样做。我做错了什么 我试着改变操作顺序,一行一行地运行,几乎所有的事情。我无法理解这些结果Assembly 从内存空间加载浮点值的正确方法是什么?为什么不是';这段代码不会产生预期的结果吗?,assembly,mips,mars-simulator,Assembly,Mips,Mars Simulator,我想加载存储在内存位置上的浮点。在这种情况下,它是aSpace、bSpace和one。例如,如果我在请求用户输入之前加载一个,它将正确加载,即“1.0”。尽管如此,如果我在用户输入后加载它,它将作为用户在最后一次输入时的输入加载。事实上,每个加载的浮点都会这样做。我做错了什么 我试着改变操作顺序,一行一行地运行,几乎所有的事情。我无法理解这些结果 .data aSpace: .float bSpace: .float one: .float
.data
aSpace: .float
bSpace: .float
one: .float 1
.text
la $a0, aSpace
jal floatInput
la $a0, bSpace
jal floatInput
lwc1 $f12, one
jal floatPrint
lwc1 $f4, aSpace
lwc1 $f6, bSpace
jal floatPrint
j exit
##################################################
return:
jr $ra
floatPrint:
li, $v0, 2
syscall
j return
floatInput:
li $v0, 6
syscall
swc1 $f0, ($a0)
syscall
j return
exit:
li, $v0, 10
syscall
我希望在“一”中加载值,但我加载用户最后输入的内容。正如Jester和Peter Cordes所说,我的问题是aSpace:.float,而不是aSpace:.float 0.0。修正了正如Jester和Peter Cordes所说,我的问题是使用aSpace:.float,而不是aSpace:.float 0.0。已修复您需要初始化该值,否则将不会分配任何空间,并且所有三个标签都指向同一位置。您可以使用调试器或符号列表验证。PS:我认为这是汇编程序中的一个bug。就像杰斯特所说的,<代码> .FULLUT/CONT>空参数列表组合为零字节,没有浮点。也许您想在BSS中保留4个字节?您需要初始化该值,否则不会分配空间,并且所有三个标签都指向同一位置。您可以使用调试器或符号列表验证。PS:我认为这是汇编程序中的一个bug。就像杰斯特所说的,<代码> .FULLUT/CONT>空参数列表组合为零字节,没有浮点。也许你想在BSS中保留4个字节?