LLVM:Writing an LLVM Backend

写一个LLVM后端 :转换LLVM IR为目标平台的指令(汇编码/机器码-JIT)

英文原文:https://releases.llvm.org/8.0.0/docs/WritingAnLLVMBackend.html#id33

详细请看知乎翻译:https://zhuanlan.zhihu.com/p/149599651

个人简短笔记如下:

  • 建立新后端的七大步骤
    1. 描述特定目标平台的属性
      1. TargetMachine.cpp
    2. 描述特定目标平台的寄存器
      1. TargetRegisterInfo.td:寄存器定义+寄存器别名+寄存器分类
      2. TargetRegisterInfo.cpp:寄存器分配和交互,include ”TargetGenRegisterInfo.inc”
    3. 描述特定目标平台的指令集
      1. TargetInstrFormats.td:指令格式
      2. TargetInstrInfo.td:指令定义
      3. TargetInstrInfo.cpp:
    4. LLVM IR从DAG到目标平台指令的选择和转换:指令选择
      1. TargetISelDAGToDAG.cpp:模式匹配+DAGToDAG指令选择
      2. TargetISelLowering.cpp:替换或删除目标平台不支持的数据和操作类型,即数据和操作合法化
    5. LLVM IR->GAS格式的汇编
      1. TargetAsmPrinter.cpp
    6. (可选)支持子目标平台,允许使用-mcpu=和-mattr=命令行选项
      1. TargetSubtarget.cpp
    7. (可选)JIT即时编译
      1. TargetJITInfo.cpp
  • 目标机器
    1. getInstrInfo()
    2. getRegisterInfo()
    3. getFrameInfo():栈帧布局
    4. getDataLayout():数据布局(大小端序+数据类型+ABI对齐+首选对齐+
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值