【问题标题】:LLVM physical register mappingLLVM 物理寄存器映射
【发布时间】:2018-02-09 08:20:26
【问题描述】:

我在 LLVM IR 中有一些函数,它有一些输入参数。但是,我想保留一个在寄存器中传递的参数,并且我只想为 x86 编译它。例如,我正在编写一个包含添加指令的函数:

%sum = add i64 %val1, %val2

无论列表中有哪些参数,我都会保证 val1 在 eax 中,而 val2 在 ebx 物理寄存器中。如何在 val1 和 eax 之间进行映射?

【问题讨论】:

  • 也许您可以将操作包装在函数调用中,并以您的 IR 方式进行检测。然后,您可以在程序集中实现该包装器(您可以访问所需的寄存器)并将其链接到最终的可执行文件中作为静态存档。

标签: x86 llvm cpu-registers llvm-ir register-allocation


【解决方案1】:

如果我们修改 GHC 调用约定并以正确的顺序对寄存器进行排序,这是可能的。不幸的是,它正在修改 LLVM 源,但它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多