在gcc中有一个名为.align
的指令,它允许我在需要为 2的幂的边界处对齐事物。但是,在我的英特尔酷睿双核机器上,我想在一些不是2的幂的地址上对齐一些代码(而不是数据)。有没有直截了当的方法呢?
因为很明显,.align 3
给了我错误:错误:对齐不是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__));
但你为什么要这样做呢?我的意思是,它会让你的程序慢得多。