对齐的比 未对齐澄清

Bil*_*ick 2 assembly

我正在介绍嵌入式系统类,并且在掌握Aligned与Unaligned内存的概念方面存在一些困难.

我们主要使用汇编级编程.

好的,这就是我目前所理解的:Aligned用于指定汇编程序将使用的指令,即所有数据的长度相同.它的所有字长或半字长或双字长.

未对齐意味着数据未定义为任何特定长度.

它是否正确?不对齐vs对齐有什么意义?什么时候使用一个相比另一个受益?

我为新手问题道歉.

old*_*mer 5

4字节对齐或32位对齐意味着4个字节的整数倍的地址,所以0x000,0x004,0x008,0x00C等.查看这个的另一种方法是4 = 2到2的功率,所以需要更低的两个地址位要对齐为零.8字节对齐,64位,8 = 2到功率3,因此低3位需要为0才能进行8字节对齐.2字节,2到电源1,所以偶数编号的地址是对齐的,奇数编号的地址是2字节传输的未对齐.基于字节的传输总是一致的,没有问题.(2为电源0,0位需要为零才能对齐).

所有系统都会对未对齐转移进行处罚,有些则比其他系统更严厉.RISC平台的一个性能特征是阻止或阻止未对齐的传输,因此MIPS,ARM等属于更强的惩罚类别(以防止它们全部在一起).ARM现在有内存控制器,允许不带旋转的未对齐传输或任何奇怪的,不确定MIPS.作为一般规则,尽管您应该尝试避免未对齐的转移,无论您使用何种系统.