Force power of 2 function alignment s.t alignment % some other value == alignment 对齐

Force power of 2 function alignment s.t alignment % some other value == alignment

基本上我正在寻找一种强制特定相对对齐的方法

即我想保证其他值 m s.t m > n alignment_of(foo) % 2^m == 2^n 即:

.align 2^m;
.global foo;
.type foo, @function
foo:
// 2^n nops
// actual function start

但希望没有进入必须经历一堆 nops。

我需要它来处理与 C 代码链接的 foo。

您始终可以在函数开始前添加填充。也许最简单的方法是做这样的事情:

        .p2align m
        .byte 0xcc
        .p2align n, 0xcc
foo:    ...

在这里,我明确地用 0xcc 字节填充了代码。您可以使用任何您喜欢的填充或省略 0xcc 以获得各种长度的 nop 指令