LLVM目标无关代码生成器(上)(译)
原文中文,约8200字,阅读约需20分钟。发表于: 。提示:本文翻译了LLVM官方文档中的The LLVM Target-Independent Code Generator一文,主要为个人学习之用。根据个人的理解,删繁就简,所以有些地方跟原文有所出入,幸勿见怪。如果需要更准确的信息,请参照原文。 简介 LLVM的代码生成器是一个框架,提供了一系列可重用组件,将LLVM...
LLVM的代码生成器将LLVM IR翻译为特定目标机器的汇编指令,包括抽象目标机描述接口、目标机器代码的类、目标文件表示代码的类和算法、目标机描述的特定机器实现和目标无关的JIT组件。要增加后端,需要实现TargetMachine和DataLayout接口。代码生成器的高层设计包括指令选择、调度和生成序列化指令、基于SSA的机器代码优化、寄存器分配、插入prolog/epilog、晚期机器码优化和代码输出。机器描述使用TableGen语言描述。代码生成器还涉及寄存器、指令和堆栈布局的描述。机器码描述使用MachineInstr、MachineBasicBlock和MachineFunction类表示。MC层用于表示和处理原始机器码级别的代码,包括汇编器API、MCStreamer、MCContext、MCSymbol、MCSection和MCInst类。