【问题标题】:Force power of 2 function alignment s.t alignment % some other value == alignment2 函数对齐的力量力量 s.t 对齐 % 其他值 == 对齐
【发布时间】:2021-04-09 18:39:30
【问题描述】:

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

即我想保证其他一些价值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。

【问题讨论】:

    标签: c assembly x86-64


    【解决方案1】:

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

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

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

    【讨论】:

    • 这会在填充上花费 1..n 个字节,而不是 0..n-1(或类似的东西,我省略了m),最坏的情况是初始地址已按需要对齐。不幸的是,我认为 GAS(或任何其他汇编程序)没有工具可以做得更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多