XLATE65
XLATE09 という単語にピンと来た人は相当のマニアです(笑)
まあ、早い話、M6502 コードを MC68000ニーモニックに変換したいとか考えているわけですが、それのメモ
・キャリーの挙動
6502でキャリーが変化するのは SEC CLC は当たり前として、
CMP系 SBC ADC を行ったときのみ。INC や DEC や LD では変化しない。
INC や DEC は addi.b #1 や subi.b #1 で対処することになるので、
キャリーが変化してしまう。気をつけけなくてはならないのが、以下のようなソース
SEC
SBC #$10
INX
BCS labelこれをベタでMC68000ニーモニックに変換すると INX に該当する処理で
キャリーの値が不安定になるため、超要注意。で、この辺を MoveToCCR とかでいちいち対処してたらめちゃくちゃ
パフォーマンスが落ちるので、フラグ回避作業はやめて、
吐き出されたソースのフラグ挙動管理は自己責任とする(笑)
・複数行に展開されるものはソースの見通しが悪くなるのでマクロ対処
LDA $c200,X
↓
movea.l a6,a5
adda.l #$c200,a5
move.b (a5,d1.w),d0か
move.l #$c200,d7
add.w d1,d7
move.b (a6,d7.l),d0どっちが軽いかはデータシートみないとわからんな・・・
・ついでなんで、MCF54xx も行っとく?
いや、それはあとで考えよう・・・・
そのためにもマクロ使うんだし・・・