私の理解が正しければ、0x10c のDCPU-16 仕様は、他のほとんどのメモリ アーキテクチャのようにバイトではなく、各オフセットが 16 ビット ワードをアドレス指定する 16 ビット アドレス空間を記述しています。これにはいくつかの奇妙な結果があります。sizeof(char)
sizeof(short)
1
このような異なるメモリ アドレッシング スキーム間で C コードの移植性を維持することは可能ですか? 覚えておくべき落とし穴は何ですか?
編集:おそらく、より具体的な例を挙げるべきでした。バイト ストリームを処理するネットワーク コードがあるとします。コードを同じままにできるように、各アドレスに 1 バイトだけを配置してメモリの半分を破棄しますか?それとも、オフセットごとに N バイトを処理するためにビットシフトですべてを一般化しますか?
edit2:答えはデータ型のサイズの問題に焦点を当てているようですが、それは重要ではありませんでした-言及するべきではありませんでした。問題は、ポインタを使用してメモリ内の任意のバイトをアドレス指定できなくなったことにどう対処するかということです。コードがこれにとらわれないことを期待するのは合理的ですか?