【发布时间】:2013-02-05 18:34:04
【问题描述】:
我目前正在用 c 语言为 atmel (Atmega328) 的 8 位微控制器编程。在程序中,我有一个存储数千个 2 位整数的 8 位数组,因此它位于程序存储空间中。目前,我在每个字节中放置了四个 2 位整数,但现在仔细想想,似乎很愚蠢……
使用具有 16 位值的数组并在每个位置存储八个 2 位变量不是更有效吗?
微控制器 (atmega328p) 是一个 8 位 IC,每条机器指令为 16 位。
【问题讨论】:
-
效率更高是什么意思?
-
编译然后反汇编看看编译器在做什么。它可能会将 8 位值打包到内存中,这样您就不会丢失一半的内存
-
@dwelch:是的,它就是这样工作的。无论哪种方式,每个程序字节都有四个元素。
-
这就是我希望它工作的方式,我总是想知道编译器正在做我希望它正在做的事情......
-
@dwelch:我使用过 avr-gcc。这正是它的工作原理。