4

楽しみのために、私は NES エミュレーターを実装しています。現在、6502 CPU のドキュメントを読んでいて、少し混乱しています。

6502 はリトル エンディアンであるため、絶対アドレッシング モードを使用する場合はバイトをスワップする必要があると記載されているドキュメントを見てきました。私はこれをリトルエンディアンの x86 マシンで書いているので、単純に uint16_t* にキャストし、それを逆参照して、コンパイラーに詳細を処理させることができなかった理由がわかりません。

私は google test でいくつかの簡単なテストを書きましたが、それらは私に同意しているようです。

// implementation of READ16
#define READ16(addr) (*(uint16_t*)addr)

TEST(MemMacro, READ16) {
  uint8_t arr[] = {0xFF,0xCC};
  uint8_t *mem = (&arr[0]);

  EXPECT_EQ(0xCCFF, READ16(mem));
}

これは合格なので、私の推測は正しいようですが、私よりも経験豊富な人に尋ねようと思いました。

6502絶対アドレッシングモードでオペランドを引き出すのはこれで正しいでしょうか?私はおそらく何かを逃していますか?

4

1 に答える 1