Итак, я изучаю MIPS, и мне нужно перевести эту программу на C на MIPS, но я не знаю, как использовать стек.Я написал программу без использования стека, но процедуры, очевидно, используют его.Кто-нибудь может мне помочь?Это код 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