【发布时间】:2012-12-13 23:41:43
【问题描述】:
我正在编写一个程序,该程序使用中断处理在 MIPS 中玩基于 ascii 的游戏。我被告知要从我的处理程序中“长时间调用”我的主要功能。我的处理程序发生在 .ktext 0x80000180 下,如下所示:
.ktext 0x80000180
move $k1, $at
beq $13, 0, keyboard
li $v0, 10 # Do nothing and exit
syscall
keyboard: # else check interupt level
la $t9, 0xffff0000
beq $t9, 1, continue
li $v0, 10 # Do nothing and exit
syscall
continue:
jal frogger # call frogger function
mtc0 $0, $13 # set cause register to 0
mfc0 $k0, $12 # Fix status register
andi $k0, 0xfffd # clear EXL bit
ori $k0, 0x1 # Enable interrupts
mtc0 $k0, $12 # Store value back into status register
move $at, $k1
eret
问题在于jal frogger 行,它说
F:\Users\Matt\WSU\Cpts 260\HW9\HW9.asm 第 32 行出错:跳转目标字地址超出 26 位范围。
是其余代码有问题还是有特殊方法从 .ktext 调用函数?
谢谢!
【问题讨论】: