调试某单板的汇编代码,想把ra,a5,a6的寄存器的值打出来:
move a0, ra
jal uart_write_hex
nop
move a0, a5
jal uart_write_hex
nop
move a0, a6
jal uart_write_hex
nop
dead1:
j dead1
nop
发现a5,a6的值打印出来请奇怪,百思不得其解。
一个小时后,突然醒悟,uart_write_hex的实现使用了a5,a6的寄存器,第二次调用uart_write_hex时,a5,a6已经被改了。
用c的惯性思维方法去写汇编,真想揍自己一拳!
阅读(936) | 评论(0) | 转发(0) |