1、参考附录C,将下列汇编程序段翻译成机器语言,并写出完整的翻译过程。
la $a0,0x10000000
lw $t0,($a0) mult $t0, $t0 mflo$t1
Sw $t1,4($a0)
2、 上述程序段的功能是什么?
1、
#la $a0,0x10000000 #加载地址为0x10000000的立即数x至寄存器$a0
lui $at,0x1000 #加载高半字
001111 00000 00001 0001 0000 0000 0000
0x3C011000
ori $a0,$at,0x0000 #加载低半字
001101 00001 00100 0000 0000 0000 0000
0x34240000
lw $t0,($a0) #加载$a0至$t0
100011 00100 01000 0000 0000 0000 0000
0x8C880000
mult $t0,$t0 #$t0 = x²
000000 01000 01000 00000 00000 011000
0x01080018
mflo $t1 #将寄存器LOW的值(计算结果)复制到寄存器$t1中
000000 00000 00000 01001 00000 010010
0x00004812
sw $t1,4($a0) #将计算结果保存到0x10000004中
101011 00100 01001 0000 0000 0000 0100
2、计算0x10000000地址上的数x的平方,并将结果储存在下一个字单元中
void reverse_output(Node* head)
{
Node* p = head;
if(p->next != NULL)
reverse_output(p->next);
printf("%d ", p->data);
printf("\n");
}