我正在用 C 语言开发一个 Chip-8 仿真器,目标是让它尽可能跨平台和尽可能小,以便与嵌入式系统和低规格系统兼容(并挑战自己),这意味着能够使用SDL、ncurses(当我谈到这一点时)和其他东西。因此,我一直在使用无符号字符来代替整数或无符号整数,并且我使用“typedef unsigned char byte”来使其更方便。我是在浪费我的时间吗,即使是为了理想地使其与非常小的系统兼容,还是只使用“typedef unsigned int byte”就足够了而不牺牲性能?
问问题
362 次
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 回答