【发布时间】:2021-06-22 13:32:58
【问题描述】:
我想知道如何从抽象语法树生成汇编代码?
谢谢!
【问题讨论】:
我想知道如何从抽象语法树生成汇编代码?
谢谢!
【问题讨论】:
我不是编译器构造的大师。但如果你是初学者,我想这个答案会有所帮助。
首先,程序集依赖于平台。您必须决定要为哪个平台生成汇编代码。这个可以参考instruction set architecture。
完成后,您可以通过两种方式生成汇编代码。
如果您要手动生成程序集,您应该对指令集架构有很好的了解。您必须遍历 AST 并将节点转换为汇编代码。您可以使用 Visitor 或 Listener aka Observer pattern 之类的设计模式来遍历 AST。
此外,您还可以使用 Asmjit 之类的库来生成机器代码。
Godbolt 将帮助您获得一些关于汇编代码的知识。
这里有一些其他的 Stackoverflow 答案可能会对您有所帮助。
【讨论】: