所以我正在研究MIPS,我需要在MIPS中翻译此C程序,但我不知道要使用堆栈。我编写程序时没有使用堆栈,但是过程显然使用了它。有人能帮我吗? 这是C代码:
void bts(int n, char *s)
{ int i;
for(i=0; i<32; ++i) if(n & (1<<i)) s[i]='1'; else s[i]='0';
s[32]='\0';
}
void main()
{
int x=259; char y[100]; bts(x,y); printf("%s\n",y);
}
这是我的MIPS程序。我需要做的就是将值放在堆栈中,但我不知道该怎么做。如果有人可以修改代码,对我有帮助。
.data
x: .space 4
y: .space 100
.text
main:
li $t0, 259
jal bts
#afisare
li $v0, 4
la $a0, y
syscall
li $v0, 10
syscall
#end_main
bts:
li $t1, 0 #i=t1
li $t2, 32
for:
beq $t1, $t2, exit
#t3=masca (1<<i)
li $t3, 1
sllv $t3, $t3, $t1
#t4=n&(1<<i)
and $t4, $t0, $t3
beq $t4, $zero, bit0
li $t4, '1'
sb $t4, y($t1)
j cond1
bit0: li $t4, '0'
sb $t4, y($t1)
cond1: addi $t1, $t1, 1
j for
#end_for
exit: jr $ra
#end_bts