阵列打包效率:8位(字节)对16位元素?

时间:2013-02-05 18:34:04

标签: c memory avr 8-bit

我目前正在使用atmel(Atmega328)为8位微控制器编程。在程序中,我有一个存储数千个2位整数的8位数组,因此它位于程序存储空间中。目前,我在每个字节中放了四个2位整数,但现在当我更仔细地考虑它时,它似乎很愚蠢...

使用具有16位值的数组并在每个位置存储8个2位变量会不会更有效?

微控制器(atmega328p)是一个8位IC,每个机器指令有16位。

2 个答案:

答案 0 :(得分:1)

如何更有效率?

空间效率

2位整数占用2位。你无法做更多的事情。

时间效率

无论你如何打包它们,你仍然需要执行相同数量的按位操作,以从较大的值中提取2位数字。

答案 1 :(得分:1)

由于这是一个带有8位寄存器的8位处理器,因此在汇编语言编程时,不会改善16位操作数的操作。但是对于c编译器来说事情更复杂。编译器绝对有可能将8位操作数转换为执行16位算术的16位操作数,因为对于我所知道的几乎任何编译器,int大小通常至少为16位。

所以拆卸真的是要走的路。