请教一下,字节对齐的问题,是字节多的变量定义在前面,字节少变量定义在后面吗
不应该这么设计,得看你的系统是几个字节对齐的,如果是4字节对齐,那么就应该尽量让一些小于四字节的变量凑在一起能够组成4个自己。
比如有变量字节数为 1 1 2 2 4 4
那么就不要 设计成 1 4 1 4 2 2 这种
你可以先自行理解一下。
引用: wangerxian 发表于 2022-11-25 10:54 不应该这么设计,得看你的系统是几个字节对齐的,如果是4字节对齐,那么就应该尽量让一些小于四字节的变量 ...
尽量让那些小字节的变量在一块,1+1+2等于4,那么这些变量就刚好4字节对齐了。
或者可以强制1 2 4等字节对齐,这个你可以搜一下,研究研究~
两个事情:字节对齐和大小端
字节对齐的问题:字节按照一定规则在空间上排列就是字节对齐。字节对齐的好处:提高效率,节省空间。
比如32位的处理器总线访问内存。每个周期从偶地址开始访问32位内存数据,内存数据以字节为单位存放。如果一个32位的数据没有存放在4字节整除的内存地址处,处理器就需要2个总线周期访问,效率下降。
为使CPU能够对数据进行快速访问,数据的起始地址应具有“对齐”特性。比如4字节数据的起始地址应位于4字节边界上,即起始地址能够被4整除。
字节对齐可以地节省存储空间。
大小端模式定义。
Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
STM32:小端模式
STM8:大端
KEIL C51:大端
x86:小端
ARM既可以工作在大端模式,也可以工作在小端模式
引用: damiaa 发表于 2022-11-25 11:01 两个事情:字节对齐和大小端 字节对齐的问题:字节按照一定规则在空间上排列就是字节对齐。字 ...
我还以为所有的单片机都是从右向左(大端)数呢