6

我注意到当我用整数替换所有字节实例时,我的 nds 应用程序工作得更快一些。所有在线示例都尽可能放置 u8/u16 实例。为什么会这样?

4

2 回答 2

16

Nintendo DS 使用的主处理器是 ARM9,一个 32 位处理器。

参考http ://en.wikipedia.org/wiki/ARM9

                    

通常,CPU 将以字长(在本例中为 32 位)执行操作。根据您的操作,必须将字节转换为整数或反之亦然可能会给处理器带来额外的压力。这种转换以及可能缺少对 32 位整数以外的值的指令可能会导致速度不足。

于 2012-07-09T19:28:26.037 回答
7

作为 Daniel Li 所说的补充,ARM 平台上的内存访问必须是字对齐的,即内存获取必须是 32 位的倍数。从内存中获取字节变量意味着获取包含相关字节的整个字,并执行所需的按位操作以将其放入处理器寄存器的最低有效位。

这些额外的指令由编译器自动发出,因为它知道变量的实际对齐方式。

于 2012-07-09T19:42:26.360 回答