C对齐,不是2的幂

时间:2009-05-22 09:42:02

标签: c alignment

在gcc中有一个名为.align的指令,它允许我在需要为 2的幂的边界处对齐事物。但是,在我的英特尔酷睿双核机器上,我想在一些不是2的幂的地址上对齐一些代码(而不是数据)。有没有直截了当的方法呢?

因为很明显,.align 3给了我错误:错误:对齐不是2的幂。

2 个答案:

答案 0 :(得分:3)

对齐2的幂,然后在您想要未对齐的代码之前使用适当数量的汇编程序NOP进行填充。 (我假设您知道如何在gcc中使用内联汇编程序;如果不这样做则发表评论。)

答案 1 :(得分:0)

假设您正在使用GCC,您可以使用打包结构和手动填充:

struct very_slow_t
{
   int a;
   char padding;
   int b; /* b is now padded to byte 5 */
} __attribute__((__packed__));

但你为什么要这样做呢?我的意思是,它会让你的程序慢得多。