内存对齐,关于__align(n)的解析

lichongyang
lichongyang
lichongyang
110
文章
0
评论
2019年8月28日16:55:23 评论 192 次浏览

__align

__align 关键字指示编译器在 n 字节边界上对齐变量。

__align 是一个存储类修饰符。它不影响函数的类型。

语法

__align(n)

其中:n

是对齐边界。

对于局部变量,n 值可为 1、2、4 或 8。

对于全局变量,n 可以具有最大为 2 的 0x80000000 次幂的任何值。

__align 关键字紧靠变量名称前面放置。

用法

如果声明的变量的常规对齐边界小于 n__align(n) 是非常有用的。八字节对齐方式可以显著提高 VFP 指令的性能。

可以将 __align 与 extern 和 static 一起使用。

限制

由于 __align 是存储类修饰符,因此不能将其用于:

  • 类型,包括 typedef 和结构定义
  • 函数参数。

只能进行过对齐。也就是说,可以将两个字节的对象按 4 个字节对齐,而不能将 4 个字节的对象按两个字节对齐。

示例

__align(8) char buffer[128];  // buffer starts on eight-byte boundary
void foo(void)
{
    ...
    __align(16) int i; // this alignment value is not permitted for
                       // a local variable
    ...
}

__align(16) int i; // permitted as a global variable.
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信小程序
  • 我的微信小程序扫一扫
  • weinxin
lichongyang
  • 本文由 发表于 2019年8月28日16:55:23
  • 转载请务必保留本文链接:https://www.chongyangli.com/archives/%e5%86%85%e5%ad%98%e5%af%b9%e9%bd%90%ef%bc%8c%e5%85%b3%e4%ba%8e__align%ef%bc%88n%ef%bc%89%e7%9a%84%e8%a7%a3%e6%9e%90/
孤独 首页

孤独

孤独是一种超越的存在,就像尼采说的:“智者总是独处着,不是他们喜欢孤独,而是周边却实没有聪明的。”所以说这是一种高傲的主动选择的生活境界。
黑进人体 首页

黑进人体

      算法现在正看着你,看着你去了哪里买了什么、遇见了谁再过不久,算法就会监视你走的每一步、每一次呼吸、每一次心跳凭借大
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: