1

我正在尝试修改 LLVM,使其在内存中保持某些常量和函数连续。
换句话说,我需要确保某些函数的机器代码总是在内存中以大约 4 字节的常量开头。函数体本身不得修改。

我可以通过以某种方式修改 LLVM IR 来实现这一点吗?

  • 如果是:我将如何在 LLVM IR 中声明以使变量和函数在内存中保持连续?

  • 如果不是:我应该修改代码生成过程的哪一部分(即,通过哪个(es))来实现这一点?任何指向我应该查看的项目/文件的链接都会有所帮助,因为我还不确定从哪里开始。

4

1 回答 1

0

据我所知,我认为您不能仅通过修改 IR 来做到这一点。你必须自己写一些东西来处理它。它也不应该是通过 - 它太低级,它应该在特定于目标的代码生成期间运行。您可以捎带现有的目标,只需修改这方面,当然,您不必从头开始编写新目标。不过,我不知道哪个位置对这个有好处。

我认为在代码生成期间将此信息从 IR 级别传递到 DAG 的一种好方法是使用元数据:将元数据附加到将它们相互链接的函数或关联常量,然后使用该链接一起发射。有关如何传输元数据的信息,请参阅llvm-dev 上的此线程。

于 2012-11-01T14:15:35.353 回答