13

私はゲームボーイエミュレーターに取り組んできLD A, AましLD B, BAND A. 最初のものは、レジスタの値を同じレジスタにロードするため、明らかに何も変更しません。 はレジスタANDと比較されているため、常に が返されます。これらの操作には何らかの目的がありますか、それとも各サイクルの後と本質的に同じですか?AAND AANOP

4

3 に答える 3

13

Jeffrey BosboomとHans Passantがコメントで指摘したように、その理由はシンプルさです。より具体的には、ハードウェアのシンプルさ。

LD r,r'命令は、ソース レジスタ ( r') の内容をデスティネーション レジスタ ( ) にコピーしますrLD r,r'オペコードは次の形式に従います。

        -------------------------------
BIT    | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
        -------------------------------
OPCODE | 0 | 1 |     r     |     r'    |
        -------------------------------

デスティネーション レジスタとソース レジスタは、次の値を想定できます。

 -----------
| BIT | REG |
 -----------
| 111 |  A  |
 -----------
| 000 |  B  |
 -----------
| 001 |  C  |
 -----------
| 010 |  D  |
 -----------
| 011 |  E  |
 -----------
| 100 |  H  |
 -----------
| 101 |  L  |
 -----------

これらの命令をハードウェアで実装するには、ビット 0 ~ 2 を受信して​​ソース レジスタを選択するマルチプレクサと、ビット 3 ~ 5 を受信して​​デスティネーション レジスタを選択する別のマルチプレクサが必要です。

ビット 0 ~ 2 とビット 3 ~ 5 が同じレジスタを指しているかどうかを確認するには、CPU にさらにロジックを追加する必要があります。ご存知のように、リソースは 80 年代にはもっと限られていました :P

LD A,A、、、、、、、などのロード命令はのようLD B,Bに動作することに注意してください。ただし、 とのように動作しないでください。これらはフラグ レジスタに影響し、実行によって内部マシンの状態が変わる可能性があるためです。LD C,CLD D,DLD E,ELD H,HLD L,LNOPAND AOR A NOP

于 2014-10-20T02:10:56.573 に答える
3

(および)命令に実際には目的があります-ゼロの場合はフラグを設定し、それ以外の場合はクリアします。そのため、との両方がこの目的で頻繁に使用されます。AND AOR AZAAND AOR A

于 2014-11-08T16:27:04.193 に答える