割り込み処理を使用して 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 から関数を呼び出す特別な方法がありますか?
ありがとう!