私は C 言語で Chip-8 エミュレーターに取り組んでいます。これは、組み込みシステムやスペックの低いシステムとの互換性のために (そして自分自身に挑戦するために) クロスプラットフォームで可能な限り小さくすることを目標にしています。つまり、使用できることを意味しますSDL、ncurses (私がその時点に到達したとき) なども同様です。そのため、int または unsigned int の代わりに unsigned char を使用しており、より便利にするために「typedef unsigned char byte」を使用しました。理想的には非常に小さなシステムと互換性を持たせるという目標があっても、私は時間を無駄にしていますか、それともパフォーマンスを犠牲にすることなく「typedef unsigned int byte」を使用するだけで十分でしょうか?
2 に答える
1
インタプリタを io バインディングから分離する必要があります。
インタプリタだけが 8 ビット移植可能である必要があります。
各ターゲット プラットフォームには、IO に使用できるさまざまなテクノロジ セットがあります。
SDL または curses を使用すると、*nix と Windows プラットフォーム間である種の移植性が得られますが、可能であれば、おそらく 32 ビットの整数が必要になるでしょう。おそらく 16 ビットを処理する必要があります。しかし、確かに8ビット整数ではありません。
一方、8 ビットおよび 16 ビットのベア メタル プロセッサを扱う場合は、プロジェクトをグラフィック ドライバに直接接続することになるでしょう。
于 2016-04-29T01:38:16.563 に答える
0
基本的な考え方は正しいですが、解決策はありません。最新の C ではuint_fast8_t
、stdint.h に型があります。
これは使用すべき型です。つまり、コンパイラに次のように伝えていることを意味します。「この整数には 8 バイトを超える必要はありませんが、パフォーマンスが向上する場合は、より大きなサイズを自由に使用してください。」
于 2016-04-29T06:25:17.277 に答える