我目前正在为atmel (Atmega328)的一个8位微控制器用c语言编程。在程序中,我有一个存储数千个2位整数的8位数组,因此它位于程序内存空间中。目前,我在每个字节中放入四个2位整数,但现在仔细想想,这似乎很愚蠢……
使用具有16位值的数组并在每个位置存储8个2位变量不是更有效吗?
微控制器(atmega328p)是一个8位IC,每个机器指令有16位。
发布于 2013-02-06 02:39:50
怎样才能更有效率?
空间效率
2位整数占用2位。你对此无能为力。
时间效率
无论如何打包,您仍然需要执行相同数量的逐位运算,以便从较大的值中提取2位数字。
发布于 2013-02-06 02:52:59
因为这是一个带有8位寄存器的8位处理器,所以在用汇编语言编程时,对16位操作数进行操作不会有什么改进。但是对于c编译器来说,事情要复杂得多。编译器将8位操作数转换为执行16位算术的16位操作数是绝对可能的,因为对于我所知的几乎所有编译器,int大小通常至少为16位。
所以反汇编才是真正要走的路。
https://stackoverflow.com/questions/14714436
复制相似问题