gpt4 book ai didi

assembly - 对齐VS。未对齐的说明

转载 作者:行者123 更新时间:2023-12-04 00:45:16 25 4
gpt4 key购买 nike

我正在学习嵌入式系统类(class),但在理解对齐内存和非对齐内存的概念时遇到了一些困难。

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

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

未对齐表示数据未定义为任何特定长度。

这是正确的吗?未对齐与对齐的意义是什么?与使用另一种相比,什么时候可以从使用一种中获益?

对于新手问题,我深表歉意。

最佳答案

4 字节对齐或 32 位对齐表示地址是 4 字节的整数倍,因此 0x000、0x004、0x008、0x00C 等。另一种查看方式是 4 = 2 的 2 次方,因此较低的两个地址位需要为零才能对齐。 8 字节对齐,64 位,8 = 2 的 3 次方,因此低 3 位需要为零才能进行 8 字节对齐。 2 字节,2 的 1 次方,因此偶数地址对齐,奇数地址不对齐 2 字节传输。基于字节的传输总是对齐的,没有问题。 (2的0次方,0位需要为0才能对齐)。

所有系统都会对未对齐的传输进行处罚,有些系统比其他系统更严重。 RISC 平台的性能特征之一是阻止或防止未对齐的传输,因此 MIPS、ARM 等属于更严格的惩罚类别(到一起阻止它们的程度)。 ARM 现在有内存 Controller ,允许在没有旋转或任何奇怪的情况下进行未对齐传输,不确定 MIPS。作为一般规则,无论您在什么系统上,您都应该尽量避免未对齐的传输。

关于assembly - 对齐VS。未对齐的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15603415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com