パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

もうやらなくていい昔のコーディングテクニックあれこれ」記事へのコメント

  • レジスタが少なかったので、スタックに放り込んでおいて、飛び先でPOPして使う。
    80系は裏レジを使いこなす。
    のがコツなんて古すぎて、誰もわからないか。
    • Re:68系は (スコア:1, すばらしい洞察)

      by Anonymous Coward on 2009年05月04日 15時37分 (#1559043)
      80系なんて言うな。裏が使えたのはZ80だけだろ。
      親コメント
      • Re:68系は (スコア:3, おもしろおかしい)

        by Anonymous Coward on 2009年05月04日 15時42分 (#1559052)
        R800の事も忘れないで…やはり忘れてください
        親コメント
      • by Anonymous Coward

        裏レジスタが使えたのはSHARPのセカンドソースと互換品のみ。

        # MZ80系ならSP-1020で画面クリアして
        # 「ネ木1ネ木4→コ」「GOTO $DOOO」
        # でSAVEってのも懐かしい

        • by komakisakio (33768) on 2009年05月04日 20時17分 (#1559184)
          いや、Zilog純正のZ80で使えますけど。ひょっとして8080では使えないって話をしてます?

          一応、http://ja.wikipedia.org/wiki/Z80 を張っておきます。
          親コメント
          • by Anonymous Coward

            裏レジスタじゃなくて拡張レジスタの方だっけ?ixhとかixlとか…

            • by komakisakio (33768) on 2009年05月06日 15時36分 (#1559998)
              IX, IYを8bit単位に分割する(IXH, IXL, IYH, IYL)命令なら、互換品でしかサポートされなかったと思います。
              純正でもeZ80やZ280だとちゃんと使えるようになってますが。
              親コメント
              • by taka2 (14791) on 2009年05月06日 16時15分 (#1560013) ホームページ 日記

                うろ覚えですが、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に切り替え、
                その次のオペコードは、そのまま通常の解釈実行部でそのまま処理するような
                単純な設計になっていたのでしょう。

                親コメント
              • by Deasuke (34806) on 2009年05月06日 19時59分 (#1560069) 日記
                はい、そうですね。そこまでは私もやったことがあります。さらに無関係な位置にEDを挟んでも(私の実験した範囲では)EDを無視して処理しました。(コピープロテクトチェッカーはdisassembler避けに(?)こういう変な命令を使っていた覚えがあります)。
                DD DD FD DD FD xx はどうなんでしょう? FD xx と一緒ですかね?
                DD ED xxはどうなんでしょう?
                このあたりは実験したことがないです。
                --
                Best regards, でぃーすけ
                親コメント
              • by Anonymous Coward
                Z80のDDやEDバイトなどは、それ自身がCPUの内部状態を変更する1つの命令と考えると、実装に近いかと思います。
                同じテクニックを古いミニコンの資料でちらっと見た覚えがあります。
                8086のプリフィックスバイトも同じような実装じゃないかな?

アレゲは一日にしてならず -- アレゲ見習い

処理中...