|
楼主 |
发表于 2016-4-12 17:30:17
|
显示全部楼层
本帖最后由 sigaofeng 于 2016-4-13 10:23 编辑
bfc00000: mtc0 $0,$12 # 把0号通用寄存器的内容写入0号协处理器第12号寄存器,
#即状态寄存器清零;此时地址应为bfc00000
bfc00004: mtc0 $0,$13 #原因寄存器清零
bfc00008: lui $8,0x0040 #把立即数0x0040 高位写入8号通用寄存器
bfc0000c: mct0 $8, $12 #把8号通用寄存器内容写入状态寄存器,即状态寄存器BEV置1
bfc00010: lui $29,0x8100
bfc00014: addiu $29,$29,0xc000 #把0x8100c000写入$29通用寄存器 即sp堆栈指针
bfc00018: lui $28,0x8105
bfc0001c: addiu $28,$28,0xb000 #把0x8105b000写入$28通用寄存器 即gp全局指针
bfc00020: bgezal $0,0x0003 #if $0>=0,调用下一条指令后的第3条指令 即bfc00030:标号处
bfc00024: nop
bfc00028: bgezal $0,0x01c1 #if $0>=0,调用下一条指令后的第0x01c1条指令 即bfc00730处
bfc0002c: nop #本处地址bfc0002c+0x01c1*4=bfc0002c+0x704=bfc00730
bfc00030: lui $1,0xa000 #把立即数0xa000 高位写入1号通用寄存器
bfc00034: or $31,$31,$1 #确保$31内地址在0xa0000000-0xb0000000
bfc00038: jr $31 #调用返回
bfc0003c: nop
|
|