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
指令
基本上我正在寻找一种强制特定相对对齐的方法
即我想保证其他值 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
指令