アカウント名:
パスワード:
裏レジスタが使えたのはSHARPのセカンドソースと互換品のみ。
# MZ80系ならSP-1020で画面クリアして# 「ネ木1ネ木4→コ」「GOTO $DOOO」# でSAVEってのも懐かしい
裏レジスタじゃなくて拡張レジスタの方だっけ?ixhとかixlとか…
うろ覚えですが、Zilog本家では仕様に明記されていなかっただけで、Zilog純正Z80でもIXH/IXLなどは使えました。
Z80 では、HL レジスタに対して処理を行うオペコード XX に対し、DD XX で、HLの代わりに IX に対する処理FD XX で、HLの代わりに IY に対する処理になってました。(ただし、(HL) に対する命令の場合は、(IX+d)になるので、オペランドが一つ増える)
で、本来の命令セット仕様上は IX は16bitレジスタで、8bit単位で処理する命令は無かったのですが、HレジスタやLレジスタに対する命令の前にDD/FDを付けてやれば、IXやIYを8bit単位で処理できました。
さらに言うと、HLレジスタが無関係なオペコードの前に DD/FDを付けても、元のオペコードの命令をそのまま実行してましたし、「 DD DD XX 」って感じで DD プレフィックスを複数回重ねても動作しました。
DD/FDというオペコードは、IX/IYに対する命令専用で、それ以外の目的には使われてなかったので、DD/FDは一時的にHLレジスタをIX/IYに切り替え、その次のオペコードは、そのまま通常の解釈実行部でそのまま処理するような単純な設計になっていたのでしょう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
68系は (スコア:2)
80系は裏レジを使いこなす。
のがコツなんて古すぎて、誰もわからないか。
Re: (スコア:1, すばらしい洞察)
Re: (スコア:0)
裏レジスタが使えたのはSHARPのセカンドソースと互換品のみ。
# MZ80系ならSP-1020で画面クリアして
# 「ネ木1ネ木4→コ」「GOTO $DOOO」
# でSAVEってのも懐かしい
Re: (スコア:1)
一応、http://ja.wikipedia.org/wiki/Z80 を張っておきます。
Re: (スコア:0)
裏レジスタじゃなくて拡張レジスタの方だっけ?ixhとかixlとか…
Re: (スコア:1)
純正でもeZ80やZ280だとちゃんと使えるようになってますが。
Re:68系は (スコア:1)
うろ覚えですが、Zilog本家では仕様に明記されていなかっただけで、
Zilog純正Z80でもIXH/IXLなどは使えました。
Z80 では、HL レジスタに対して処理を行うオペコード XX に対し、
DD XX で、HLの代わりに IX に対する処理
FD XX で、HLの代わりに IY に対する処理
になってました。(ただし、(HL) に対する命令の場合は、(IX+d)になるので、オペランドが一つ増える)
で、本来の命令セット仕様上は IX は16bitレジスタで、8bit単位で処理する命令は無かったのですが、
HレジスタやLレジスタに対する命令の前にDD/FDを付けてやれば、IXやIYを8bit単位で処理できました。
さらに言うと、
HLレジスタが無関係なオペコードの前に DD/FDを付けても、元のオペコードの命令をそのまま実行してましたし、
「 DD DD XX 」って感じで DD プレフィックスを複数回重ねても動作しました。
DD/FDというオペコードは、IX/IYに対する命令専用で、それ以外の目的には使われてなかったので、
DD/FDは一時的にHLレジスタをIX/IYに切り替え、
その次のオペコードは、そのまま通常の解釈実行部でそのまま処理するような
単純な設計になっていたのでしょう。
Re:68系は (スコア:1)
DD DD FD DD FD xx はどうなんでしょう? FD xx と一緒ですかね?
DD ED xxはどうなんでしょう?
このあたりは実験したことがないです。
Best regards, でぃーすけ
Re: (スコア:0)
同じテクニックを古いミニコンの資料でちらっと見た覚えがあります。
8086のプリフィックスバイトも同じような実装じゃないかな?