CPU0文件解析系列--第一章--概述

该文描述了一个针对CPU0架构的LLVM编译器实现,包括汇编解析、指令选择、函数调用约定、指令调度和目标机器描述等关键组件。它涉及汇编语言转换为LLVM-IR,以及优化如删除无用JMP、填充延迟槽等。此外,还涵盖了反汇编、目标流和栈帧处理等方面。
摘要由CSDN通过智能技术生成
├── AsmParser
│   ├── CMakeLists.txt
│   └── Cpu0AsmParser.cpp  //可以把平台相关的汇编语句转换为LLVM-IR
├── CMakeLists.txt
├── Cpu0.h                 //定义了4个pass
├── Cpu0.td                //描述CPU0的基本特性
├── Cpu0AnalyzeImmediate.cpp  //解析指令中的立即数
├── Cpu0AnalyzeImmediate.h
├── Cpu0Asm.td                //包括寄存器td文件和Cpu.td
├── Cpu0AsmPrinter.cpp        //输出汇编代码
├── Cpu0AsmPrinter.h
├── Cpu0CallingConv.td        //描述调用规约
├── Cpu0CondMov.td            //定义条件移动指令,例如movz
├── Cpu0Config.h
├── Cpu0DelUselessJMP.cpp     //一个pass例子,删除无用的JMP指令
├── Cpu0DelaySlotFiller.cpp   //延迟槽相关
├── Cpu0EmitGPRestore.cpp     //恢复全局寄存器
├── Cpu0FrameLowering.cpp     //函数调用栈帧相关
├── Cpu0FrameLowering.h
├── Cpu0ISelDAGToDAG.cpp      //LLVM DAG转换为CPU0 DAG
├── Cpu0ISelDAGToDAG.h
├── Cpu0ISelLowering.cpp      //DAG节点转换为汇编指令
├── Cpu0ISelLowering.h
├── Cpu0InstrFormats.td       //定义指令格式,例如R型指令
├── Cpu0InstrInfo.cpp
├── Cpu0InstrInfo.h
├── Cpu0InstrInfo.td          //定义指令
├── Cpu0LongBranch.cpp        //生成长跳转指令
├── Cpu0MCInstLower.cpp       //将CPU0指令集的机器指令转换为LLVM MCInst的形式,MCInst是指令的抽象表现形式,便于转换为汇编或者二进制机器码
├── Cpu0MCInstLower.h
├── Cpu0MachineFunction.cpp   //函数调用相关,和Cpu0FrameLowering相互关联
├── Cpu0MachineFunction.h
├── Cpu0Other.td              
├── Cpu0RegisterInfo.cpp
├── Cpu0RegisterInfo.h
├── Cpu0RegisterInfo.td       //寄存器相关
├── Cpu0RegisterInfoGPROutForAsm.td
├── Cpu0RegisterInfoGPROutForOther.td
├── Cpu0SEFrameLowering.cpp   //Stack Engine(SE) 是专门处理栈操作指令的硬件。类似 PUSH、POP、CALL、RET 这样的指令都算栈操作指令。
├── Cpu0SEFrameLowering.h
├── Cpu0SEISelDAGToDAG.cpp
├── Cpu0SEISelDAGToDAG.h
├── Cpu0SEISelLowering.cpp
├── Cpu0SEISelLowering.h
├── Cpu0SEInstrInfo.cpp
├── Cpu0SEInstrInfo.h
├── Cpu0SERegisterInfo.cpp
├── Cpu0SERegisterInfo.h
├── Cpu0Schedule.td           //指令调度相关,包括指令的延迟周期、操作数之间的依赖关系、指令调度器的实现   
├── Cpu0SetChapter.h
├── Cpu0Subtarget.cpp        //Subtarget代表一个特定的目标机器,包括一些全局配置信息
├── Cpu0Subtarget.h
├── Cpu0TargetMachine.cpp    //targetMachine初始化
├── Cpu0TargetMachine.h
├── Cpu0TargetObjectFile.cpp //生成文件相关
├── Cpu0TargetObjectFile.h
├── Cpu0TargetStreamer.h
├── Disassembler
│   ├── CMakeLists.txt
│   └── Cpu0Disassembler.cpp //反汇编
├── InstPrinter
│   ├── CMakeLists.txt
│   ├── Cpu0InstPrinter.cpp //输出汇编指令
│   └── Cpu0InstPrinter.h
├── MCTargetDesc
│   ├── CMakeLists.txt
│   ├── Cpu0ABIInfo.cpp     //ABI相关
│   ├── Cpu0ABIInfo.h
│   ├── Cpu0AsmBackend.cpp  //Cpu0架构的汇编后端,包括处理fixup信息、生成NOP指令、转换为ELF
│   ├── Cpu0AsmBackend.h
│   ├── Cpu0BaseInfo.h
│   ├── Cpu0ELFObjectWriter.cpp
│   ├── Cpu0FixupKinds.h
│   ├── Cpu0MCAsmInfo.cpp
│   ├── Cpu0MCAsmInfo.h
│   ├── Cpu0MCCodeEmitter.cpp
│   ├── Cpu0MCCodeEmitter.h
│   ├── Cpu0MCExpr.cpp
│   ├── Cpu0MCExpr.h
│   ├── Cpu0MCTargetDesc.cpp
│   ├── Cpu0MCTargetDesc.h
│   └── Cpu0TargetStreamer.cpp
└── TargetInfo
    ├── CMakeLists.txt
    └── Cpu0TargetInfo.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值