gpt4 book ai didi

llvm - 在基于 LLVM 的编译器中如何处理符号表?

转载 作者:行者123 更新时间:2023-12-04 19:54:32 82 4
gpt4 key购买 nike

我通过教程使用 LLVM http://llvm.org/releases/3.1/docs/tutorial/ 编写玩具编译器
但是关于符号表处理的内容并不多。
有一个命令 llvm-nm 显示符号表,它以位码文件作为输入。它只返回函数名。 LLVM 编译器如何在没有符号表的情况下处理局部变量和循环变量?如果不是这样,符号表是如何处理的

最佳答案

其 IR 的 LLVM 内存表示不使用符号表。指令包含指向其操作数(及其用户)的直接内存链接,因此如果您有一条指令并想要访问其操作数,只需点击该链接,您就不必在任何符号表中执行查找。

有一些与 LLVM 上下文、模块、函数和基本 block 相关联的列表,它们允许您访问包含的元素,但它们大多只是列表,而不是将名称与任何东西相关联的表。

当然,如果您想解析文本 IR 文件 (ll),您可能需要一个符号表(或类似的东西)来执行此操作并创建上述链接;但是看到 LLVM 已经包含这样的解析器(并且该解析器确实使用某种方式将“名称”与值相关联 - 请参阅 BitcodeReader 的实现),几乎没有理由这样做。

至于用于生成 IR 的 LLVM 前端 - 这取决于您。我想说,如果您想解析类似 C 的语言,使用符号表将非常有用。

关于llvm - 在基于 LLVM 的编译器中如何处理符号表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13089015/

82 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com