![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译器
名字先想一想
这个作者很懒,什么都没留下…
展开
-
llvm中的XXXInstrInfo.td
全文基于作者主观理解,仅供参考: XXXInstrInfo.td文件中定义的是目标机的指令格式。这种td文件会被TableGen自动生成c++类型文件。下面主要是要讨论该文件中的代码含义。 1、def CPU0Ret : SDNode<"CPU0ISD::Ret", SDTNone, [SDNPHasChain,SDNoptInGl...原创 2018-03-07 16:46:04 · 1280 阅读 · 0 评论 -
LLVM的参考资料
想用LLVM写后端编译器时,收集了一些资料。关于LLVM的中文资料并不多,当然LLVM自己的官方文档倒是非常的全,不过是全英文。 1、关于LLVM和Clang的基本介绍就不说了,这个资料还是很比较多且容易理解的。 2、有一个关于 后端开发的译本 ,这是翻译自官方文档的。不过像是机器翻译的,有些语句读起来不太通顺。 3、还有一个博主写的LLVM的介绍和学习历程,信息挺多的。...原创 2018-03-04 22:31:21 · 414 阅读 · 0 评论 -
LLVM指令的选择
对指令选择过程中一些代码的解释: 1、这里的指令选择发生在SelectionDAG阶段的后段,即DAG图已经转成了目标机器的DAG并完成了Schedule(指令调度);但在寄存分配之前。此阶段其实就是发射机器指令了。 这个阶段中是采用BuildMI方法(定义在: llvm\include\llvm\Codgen\MachineBuilder.h)进行由前者到后者的转...原创 2018-03-19 07:51:28 · 1408 阅读 · 0 评论 -
LLVM指令流程的变化--从IR到Assembly code
本文由作者主观理解,只供参考: LLVM中的IR代码是可以由前端的工具(如Clang)生成的,所以这里以此为起点进行解释。 从LLVM IR开始要经历的阶段有: LLVM IR----1--->SelectionDAG----2-->MachineDAG----3--->MachineInstr---4--->MCInst 官方文档中Targ...原创 2018-03-05 16:45:51 · 1502 阅读 · 0 评论 -
Host Clang must be able to find libstdc++4.7 or newer!
这个问题的出现是我在用LLVM开发自己的编译后端时遇到的。当手抖敲了rm -rf * 后,导致配置好的环境被破坏,在试图还原时升级了gcc版本。后来再用LLVM时就出现了该问题。问题具体是出在当把自己的后端加入LLVM后进行编译时,即运行:cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=D...原创 2018-04-18 16:37:59 · 666 阅读 · 0 评论