tarosukeの日記: 遅延分岐めんどくせー
日記 by
tarosuke
例の仕事が終わらなくて、とうとうSHをアセンブラレベルで触ることに...
といってもブート部をいじってるだけだけど。
bsr(call)とかrts(return)が遅延分岐だって事を忘れがちでアレ。
SHは16bitsを越える即値を扱えないのでrtsの後にはデータが転がってるわ
けで、rtsの前にそのデータを実行し...というわけ。字面上は遅延スロット
にlds r*,prでもブチ込みゃいいんだけど、それをするとPRレジスタの競合
がキモチワルイ。
ま、ちっと遅くなるだけなんだけど。でも、あのメーカーの石だ。
# [変更前の値になる]くらいのことはやりかねん。
rts実行前のPRがリターンアドレスになるからrtsの遅延スロットでldsして
PRを復旧するのはダメ。ボケてるなぁ...もうダメかも。
つかね、ldsでPRを復旧した直後にrtsするとまともに動かないくさいのは、
やっぱりPRが競合してるからなのかしらん。パイプラインがストールするだ
けなんじゃなかったっけ、こういう場合...
遅延分岐めんどくせー More ログイン