在 gcc 中有一个名为的指令.align
,它允许我在需要为 2 的幂的边界处对齐事物。但是,在我的 Intel Core Duo 机器上,我想将一些代码(不是数据)对齐到不是 2 次幂的地址。有没有直接的方法可以做到这一点?
因为显然,.align 3
给了我错误:错误:对齐不是二的幂。
对齐到 2 的幂,然后在要未对齐的代码之前填充适当数量的汇编器 NOP。(我假设您知道如何在 gcc 中进行内联汇编;如果您不知道,请发表评论。)
假设您使用的是 GCC,您可以使用打包结构和手动填充:
struct very_slow_t
{
int a;
char padding;
int b; /* b is now padded to byte 5 */
} __attribute__((__packed__));
但是你为什么要这样做呢?我的意思是,它会使你的程序慢得多。