全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
为了能使CPU对变量进行高效快速的访问,变量的起始地址应该具有某些特性,即所谓的“对齐”。例如对于4字节的int类型变量,其起始地址应位于4字节边界上,即起始地址能够被4整除。变量的对齐规则如下(32位系统):TypeAlignmentchar在字节边界上对齐short (16-bit)在双字节边界上对齐int and long (32-bit)在4字节边界上对齐float在4字节边界上对齐double在8字节边界上对齐structures单独考虑结构体的个成员,它们在不同的字节边界上对齐。其中最大的字节边界数就是该结构的字节边界数。MSDN原话:Largest alignment requirement of any member理解结构体的对齐方式有点挠头,如果结构体中有结构体成员,那么这是一个递归的过程。对齐方式影响结构体成员在结构体中的偏移设编译器设定的最大对齐字节边界数为n,对于结构体中的某一成员item,它相对于结构首地址的实际字节对齐数目X应该满足以下规则:X = min(n, sizeof(item)例如,对于结构体 struct char a; int b T;当位于32位系统,n=8时:a的偏移为0,b的偏移为4,中间填充了3个字节, b的X为4;当位于32位系统,n=2时:a的偏移为0,b的偏移为2,中间填充了1个字节,b的X为2;结构体的sizeof设结构体的最后一个成员为LastItem,其相对于结构体首地址的偏移为offset(LastItem),其大小为sizeof(LastItem),结构体的字节对齐数为N,则:结构体的sizeof 为: 若offset(LastItem) sizeof(LastItem)能够被N整除,那么就是offset(LastItem) sizeof(LastItem),否则,在后面填充,直到能够被N整除。例如:32位系统,n=8,结构体 struct char a; char b; T;struct char a; int b; T1;struct char a; int b; char c; T2;sizeof(T) = 2; N = 1 没有填充sizeof(T) = 8; N = 4 中间填充了3字节sizeof(T2)=12; N = 4 中间,结尾各填充了3字节注意:1) 对于空结构体,sizeof 1;因为必须保证结构体的每一个实例在内存中都有独一无二的地址。2) 结构体的静态成员不对结构体的大小产生影响,因为静态变量的存储位置与结构体的实例地址无关。例如:struct static int I; T; struct char a; static int I; T1;sizeof(T) = 1; sizeof(T1) = 1;3) 某些编译器支持扩展指令设置变量或结构的对齐方式,如VC,详见MSDN(alignment of structures)以下为Linux内核代码中的例子:_attribute_(regparm(0) int printk(const char * fmt, .)_attribute_ (format (printf, 1, 2);禁止printk使用寄存器传递调用参数,并将printk的参数1作为printf格式串,从参数2开始检查其类型;void _switch_to(struct task_struct *prev, struct task_struct *next)_attribute_(regparm(3) ;_switch_to保留3个寄存器用作传递参数;void _attribute_ (_section_ (.text.init) mem_init();将mem_init编绎到.text.init段;struct tasklet_head tasklet_vec32 _attribute_(_aligned_(32),_section_(.data.cacheline_aligned) ;将tasklet_vec32编绎到.data.cacheline_aligned段,并将它在32字节边界上对齐;void do_exit(long error_code)_attribute_(noreturn);do_exit不会返回;struct Xgt_desc_struct unsigned short size; unsigned longaddress _attribute_(packed);将address在结构中紧凑排列。-MSDN-#pragma pack(n)When you use #pragma pack(n), where n is 1, 2, 4, 8, or 16, each structure member after the first is stored on the smaller member type or n-byte boundaries. If you use #pragma pack without
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年通榆县信访信息中心公开选调事业编制工作人员备考题库(5人)及答案详解(名校卷)
- 2026重庆农村商业银行校园招聘180人备考题库附答案详解(达标题)
- 2025江西新余市公安局招聘警务辅助人员160人备考题库带答案详解(完整版)
- 新疆维吾尔自治区昌吉回族自治州奇台县部分学校2025-2026学年八年级上学期12月月考语文试题(含答案)
- 2025广东佛山市高明区明城镇招聘村(社区)党群服务中心辅助工作人员7人备考题库及完整答案详解1套
- 2026福建省面向湖南大学选调生选拔工作备考题库附答案详解(精练)
- 个性化膳食方案干预儿童EEDs相关肥胖
- 2025南京银行南通分行国际业务阶段性社会招聘备考题库及参考答案详解
- 2026中国工商银行江苏省分行校园招聘备考题库及答案详解(必刷)
- 2025江苏苏州市昆山市千灯镇招聘社区编外工作人员4人备考题库及一套参考答案详解
- 吸附处理技术
- 小学四年级口算题大全(10000道)
- 监理公司-见证取样登记台帐
- 钢构件包装作业指导书
- 武汉市初中学生综合素质评价内容及标准
- 新编物理基础学(上下册)课后习题详细答案 王少杰 顾社主编
- 汽车构造课件-转向系
- 诉讼文书送达地址确认书
- 二章 商品的质量与认证
- (水库)水利工程绿化工程评定表
- GB∕T 32336-2015 气动 带可拆卸安装件的缸径32mm至320mm的气缸基本尺寸、安装尺寸和附件尺寸
评论
0/150
提交评论