align指令
来源:互联网 发布:git 修改ssh 端口 编辑:程序博客网 时间:2024/06/03 11:17
align指令可以用于设置各种内置类型、自定义类型如struct、union或class的的对齐方式。指令格式为: __declspec(align( # )) ,#是对齐值,取值为2的1次方至2的8192次方。在声明自定义类型或内置变量时,如果指定了对齐值,则对应变量的起始地址必须是该值的整数倍。除此外,它还会影响结构体的大小。
总结公式为:
sizeof(structure) = (结构体最后一个成员的偏移 + sizeof(结构体最后一个成员) ),所得数值扩充到max( 结构体各成员的最大对齐值,align(#)设置的值 )的整数倍;
下面以一代码来说明align(#)指令的用法:
#include <iostream>
using namespace std;
#define CACHE_LINE 32
#define CACHE_ALIGN __declspec(align(CACHE_LINE))
#pragma pack(8)
struct CACHE_ALIGN S1
...{
int a, b, c, d;
};
struct S3
...{
struct S1 s1;
int a;
};
#pragma pack()
int _tmain(int argc, _TCHAR* argv[])
...{
CACHE_ALIGN int i = 2;
cout << sizeof(S1) << endl;
cout << sizeof(S3) << endl;
return 0;
}
运行程序输出32和64,按公式sizeof(structure) = (结构体最后一个成员的偏移 + sizeof(结构体最后一个成员) ) 所得数值扩充到max( 结构体各成员的最大对齐值,align(#)设置的值 )的整数倍; 分析:
sizeof(S1) = (12+4) 扩充( max( 4, 32 ) )的整数倍
sizeof(S1) = (16) 扩充到( 32 )
sizeof(S1) = 32
- align指令
- ALIGN 边界对齐指令
- 数据及指令对齐(align)
- ARM汇编align伪指令
- arm汇编align伪指令
- .align x 指令作用的直观解释。
- ARM汇编指令:.align理解和用法
- 请教汇编ALIGN伪指令的问题
- EVEN,ALIGN,ORG,dup指令的理解
- arm汇编align伪指令详解
- align
- ALIGN
- align text-align vertical-align
- Win32ASM学习[5]: 数据对齐相关的伪指令(ALIGN、EVEN、ORG)
- 《Inter汇编语言程序设计》10.1.1 结构中域的对齐(ALIGN伪指令)
- Win32汇编数据对齐相关的伪指令(ALIGN、EVEN、ORG)
- text-align: vertical-align:
- ALIGN size as align
- 典型分支机构网络解决方案
- Jira数据备份
- big endian 的判断代码
- 最强分页类
- 典型小型办公网络解决方案
- align指令
- 小型办公网络与分支机构网络组建思路
- Spring事务管理----声明式:利用TransactionProxyFactoryBean生成事务代理
- 如何理解.net中的垃圾回收机制
- Java与C#的区别1
- 淘宝山寨IOS sdk
- NETGEAR 新一代制造业网络解决方案
- 二进制 十六进制 八进制
- html table tr td br 什么意思 缩写