不同环境下的字节对齐使用

GCC 的字节对齐控制

 

GCC 也支持 #pragma 字节控制

l        #pragma pack (n) gcc 将按照 n 个字节对齐

l        #pragma pack () ,取消自定义字节对齐方式

 

#pragma 只保证的成员相关偏移量是字节对齐的 . 不保证绝对地址对齐 .

 

GCC 也支持某个一个数据结构实现绝对地址的自然对齐

__attribute((aligned (n))) 让所作用的结构成员对齐在 n 字节自然边界上。如果结构中有成员的长度大于 n ,则按照最大成员的长度来对齐。

__attribute__ ((packed)) ,取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。

 

struct STRUCT_TEST
 {
  char a;
  int b;
  char c;
 }  __attribute__ ((packed)) ; //
注意位置 , } ; 之间

l        __attribute GCC 属性 , #pragma 不同, __attribute__ gcc 的方言 , 只有 GCC 能识别 , 不要在 VC++ 之类编译器使用这种定义 .

l        __attribute 每次只对一个结构生效 .

 

 

 

ADS 的字节对齐控制

 

ARM 对访问地址有特殊要求 , 如果不对齐 , 会造成程序错误 , 而不是象 X86 PowerPC 那样折成两个指令访问 . 因此用 #pragma pack(1) 只是让结构本身成员内部按 1 对齐 , 并不能保证结构的绝对地址是对齐 .

  ADS 采用特殊指令来实现要想保证地址对齐 .ADS 采用 ALIGN.__align(num), .__packed, 来控制字节对齐

l        ALIGN 用于汇编的字节对齐控制

l        __align(num) 类似于 #pragma pack(num), 用于整片代码字节对齐的的控制 .

l        __packed 取消某个结构或成员的内部字节对齐 , 并实现绝对地址对齐 , 类似于 gcc __attribute__ ((packed));

 

     __packed struct STRUCT_TEST
 {
  char a;
  int b;
  char c;
 }  ;

 

字节对齐练习

请指在 windows 32 下出下列值的 sizeof 和各个成员的偏移量

1. struct  s1{

   short a;

   short b;

   short c;

};

 

2. struct s2{

    char a[21];

    short b;

};

3. struct s2{

    float a;

    char b;

    short c;

    int d;

};

 

5.      #pragma pack (1)

typedef struct s8

{

  char a;

  int b;

  short c;

  double d;

}s8;

#pragma pack ()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机应用基础 模拟题 1.计算机软件系统包括 ( 系统软件 应用软件 ) 2.在计算机中,一个字节由 8 位( 二进制 ) 3.计算机中用来表示内存储器容量大小的最基本单位是( 字节 )。 4.计算机术语中IT,表示( 信息技术 )。 5.在Windows环境中,整个显示屏幕称为( 桌面 )。 6.计算机病毒能够自我复制,这是计算机病毒的( 传染性 )。 7.Windows中文件的扩展名的长度为( 3 )字符。 8.格式化磁盘的主要目的是( 清理存储数据 ) 9.硬盘是( 存储器 )的一种。 10.Windows的文件夹组织结构是一种(树状结构 ) 11.鼠标器是Windows环境中一种重要的(互交 )工具。 12.通过Windows"开始"菜单中的(所有程序 )可以启动应用程序。 13.在Windows中,当一个应用程序窗口被最小化后,该应用程序将(被隐藏 )。 14.在Windows中,"回收站"是存放(临时性删除)文件的容器。 15. 如果只记得文件的名称,忘记了它的位置那么要打开它的最简便方法是(使用系统菜单 中的"查找"命令项)。 16.在Word2003的(阅读版式)视图方式下,可以显示分页效果。 17.如果已有页眉或页脚,再次进入页眉页脚区只需双击(页眉页脚区域)就行了。 18.在Word文档中,将光标直接移到文档尾的快捷键(End)。 19.Word2003在编辑一个文档完毕后,要想知道它打印的效果,可使用( 打印预览 )功能。 20.在Word文档中可利用( 剪切、粘贴 )操作过程相互配合,用以将一段文本内容移到另一处。 21.在Word2003文档中要设置"页边距",则应该使用( 页面设置 )。 22.在Word 2003中若要进入页眉页脚编辑区,可以单击菜单( 视图 ) 选择页眉.页脚命令。 23.Word中将文档中所有的"Computer"都改成"计算机",可用( 查找、替换 )操作最方便。 24.Word 2003中段落的默认的对齐方式是( 文本左对齐 )。 25.Word 2003中若要在打印文档之前观看打印效果应使用的命令是( 打印预览 )。 26.在Word2003中,插入图片可通过( 插入 )菜单下的"图片"进行操作。 27.在Excel 2003中建立的文档通常被称为( 电子表格 )。 28.Excel 2003的工作表从外观上看是一张二维表格,它最多可有( 256 )列。 29.在Excel 2003中要选中多个不连续的单元格的按键是( Ctrl )。 30.工作表中第三行,第四列的绝对地址表示为( D3 )。 31.Excel 2003中,如果光标在单元格地址C4中,那么光标位于工作表的( 第4行、第3列 )地方。 32. 若要对Excel工作表命名,可使用的方法是( 双击标签,直接键入新名字 )。 33.在Excel中函数 ,SUM( 求和 ) ,MAX( 求最大值 ) ,AVERAGE( 求平均值 ),IF( 判断 )。 34.在Excel 2003中,要对某个数据表进行筛选,应该选择( 数据 )菜单。 35.与 Word 2003 和Excel 2003相比( 动画 )菜单项是PowerPoint 2003特有的。 36.在幻灯片母版设置中,可以起到( 统一整套幻灯片的风格 )的作用。 37.为幻灯片中的文本创建超级链接,可用( 插入 )菜单中的"超级链接"命令。 38.多媒体计算机是指( 能处理多种媒体信息的计算机 )。 39.计算机网络的主要目的是( 共享资源 )。 40域名www.ctbu.edu.cn中,cn表示( 中国 )。 41.下面IP地址中,正确的是( )。 42.通常一个完整的计算机系统应该包括( 硬件系统、软件系统 )。 43.操作系统是硬件与( 软件 )之间的接口。 44.我的电脑和( 资源管理器 )是用于文件和文件夹管理的两个应用程序,利用它们可以显示文件夹的结构和文件的 详细信息。 45.在PowerPoint的编辑状态下,按快捷键( F5 )可以观看放映。 46.在主机域名中,WWW指的是( 万维网 )。 47.第二代计算机逻辑元件采用的是( 晶体管 )。 48.使用键盘时,要输入数字键上的上档字符应按下( Shift )键再按相应键。 49.在Word 2003中,添加页码可通过( 插入 )菜单下的"页码"进行操作。 50.Excel单元格的引用有相对引用、绝对引用、( 混合引用 )。 51. 操作系统是( 硬件 )与软件之间的接口。 52. 在Windows中,"回收站"是( 硬盘 )中的一块区域。 53. 在幻灯片放映过程中,按( Esc )键可退出幻灯片放映。 54. 按网络覆盖范围的大小,我们将计算机网络分为局域网、城域网和( 广域网 )。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值