我使用“编译器资源管理器”将c ++转换为MIPS 但由于%hi和%lo
,它在MARS中效果不佳我知道我应该更改零件,但是我不知道如何更改...
请帮助
$L5:
lui $2,%hi($LC1)
lwc1 $f0,%lo($LC1+4)($2)
lwc1 $f1,%lo($LC1)($2)
b $L3
$LC1:
.word 1100470148
.word 0
$L17:
lw $2,16($fp)
addiu $3,$2,1
sw $3,16($fp)
lui $4,%hi(savepath)
sll $3,$2,2
addiu $2,$4,%lo(savepath)
addu $2,$3,$2
li $3,1 # 0x1
sw $3,0($2)
move $sp,$fp
lw $fp,36($sp)
addiu $sp,$sp,40
j $31
答案 0 :(得分:1)
AFAIK,火星中没有办法具有气体%lo(label)或%hi(label)功能。
一个简单的解决方法是使用标准宏la
,该宏通过一对或lui
/ ori
指令将标签加载到寄存器中。
代码的第一部分可以这样重写:
$L5:
la $2, $LC1
lwc1 $f0,4($2)
lwc1 $f1,0($2)
b $L3
$LC1:
.word 1100470148
.word 0
随着la
宏扩展为两条指令,与使用%hi/%lo
相比,这是一条额外的指令,但是它可以工作。