Ohai、 私は現在、学習目的で8086 ASMデバッガを実装しようとしています。今までは、char配列を使って8ビットと16ビットのレジスタをシミュレートしようとしましたが、AX、AL、AHで作業する場合、このアプローチはナットとなります。C:8086レジスタをシミュレートするにはどうすればよいですか?
#define setAL() { int i; for (i = 0; i < 8; i++) AL[i] = AX[i]; }
char AX[16] = {0, 1, 1, 1, 1 ,1 ,1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
char AL[8] = {0, 0, 0, 0, 0, 0, 0, 0};
は、誰もがこれらのレジスタをシミュレートする方法を任意の良いアイデア(または「ベストプラクティス」のようなもの)を持っていますか?
これは移植可能ですか? (endianness、sizeof(short)、...) – asaelr
いいえ、それはそれらの点で移植性がありません。短いことが16ビットになるという保証はありませんが、それは意図を越えています。移植性を探しているなら、作者はおそらくPaul Hseihの[this pstdint.h](http://www.azillionmonkeys.com/qed/pstdint.h)のような移植可能な整数の定義のセットを探す必要があります。同様に、エンディアンが異なるアーキテクチャー間の移植性が懸念される場合は、バイトフィールドの順序を切り替える必要があります。 –