【发布时间】: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