数据对齐的作用(于ALIGN密切相关)
来源:互联网 发布:sql 别名 空格 编辑:程序博客网 时间:2024/03/29 10:00
首先由结构体的大小计算方式可以引出这个问题。在过去的学习当中我们可以知道,一个结构体的大小就是其成员变量大小之和。然而在编译器中利用sizeof一个结构体变量时你会发现,结构体的大小往往大于预期。
这是为什么。因为编译器在这些成员变量中插入了一些值,使得这些变量在内存中以一个特殊的规则排列,这叫做内存对齐。由于编译器的优化,往往会忽略这一点。
内存对齐实际上是编译器为了提高程序在执行时的运行效率而实现的一种优化方法。在32位架构的计算机中,CPU跟内存通过32位的数据线进行数据的传输,也就是说为了得到内存中某一地址的内容,内存和CPU之间要传输4字节的内容。即使是CPU读取或者写入,也是如此,无非是选出所要的一个内存单元上的数据。因此当一个4字节的内容放在起始地址非4整除的位置上的时候,CPU必须读取两次内存单元上的内容并把选出需要的位置上的数据。内存对齐就是将数据移动到相邻的首地址是4的倍数的位置(除了小于4byte的数据),从而以编译损失的代价来换取运行时候的高效的数据读写效率
出自王爽汇编的一道题目
对于如下定义的段:
name segment
....
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为_____.
答案:
(N/16+1)*16(字节) [说明:N/16只取整数部分] 或 (N+15)/ 16(节) ,对16取整
在8086CPU架构上,段是以paragraph(16-byte)对齐的。程序默认以16字节为边界对齐,所以不足16字节的部分数据也要填够16字节。“对齐”是alignment,这种填充叫做padding。16字节成一小段,称为节
- 数据对齐的作用(于ALIGN密切相关)
- Win32ASM学习[5]: 数据对齐相关的伪指令(ALIGN、EVEN、ORG)
- Win32汇编数据对齐相关的伪指令(ALIGN、EVEN、ORG)
- align的对齐方式
- 数据及指令对齐(align)
- css中vertical-align(垂直对齐)的使用
- vertical-align的小作用
- SOA的成功与WOA和Web 2.0密切相关
- 与 ITPro 管理工作密切相关的 win 7 新特性
- Problem 59 GCC密切相关的一些环境变量?
- .align 5的是多少字节对齐
- 垂直对齐vertical-align的一些认识
- 块状元素的text-align对齐属性
- 关系密切的设计模式(一)
- CSS水平对齐(text-align)
- 垂直对齐:vertical-align属性(转贴)
- 垂直对齐:vertical-align属性(转)
- vim对齐(vim-easy-align)
- 描述符属性
- 保护模式下段基址和段界限在描述符中分开存放的原因
- A20地址线
- debug中-t的使用
- 01数据库设计
- 数据对齐的作用(于ALIGN密切相关)
- sourcegrid 应用实例(全部来自官网下载的例子)
- NASM与MASM的区别(不断更新中,参考NASM中文手册)
- 临界表达式
- 低落的我
- BSS段
- linux shell awk获得外部变量(变量传值)
- VC++的链接错误LNK2001
- Fedora 14 内核编译 安装