为什么那些“加载”和“存储”操作符需要一个“对齐”属性,它是如何与内存对齐一起工作的?
顺便说一句,为什么我们需要这个操作符,因为底层系统会自动为我们做内存对齐?
这是对 VM 的承诺,参数形式堆栈(baseAddr + memarg.offset) mod 2^memarg.align == 0在哪里baseAddr。
换句话说,我们实际上将内存分割为大小为字节的块,2^memarg.align并向 VM 保证我们的实际地址 ( baseAddr + memarg.offset) 将位于任何块的开头,而不是中间。
由于 的最大值memarg.align为 3,块的大小(以字节为单位)可以是 {1, 2, 4, 8} (1 = 2^0, .., 8 = 2^3)。
此外,您还可以在这里找到详细的解释。
| 归档时间: |
|
| 查看次数: |
629 次 |
| 最近记录: |