
编译原理
文章平均质量分 77
编码练习生
笔记
展开
-
LLVM笔记4 LLVM各个工具总结(更新中)
LLVM后端编译器,将main.opt.bc(LLVM IR)转化成main.s(汇编文件)或者main.o(目标文件)。LLVM中端优化器,将main.bc(LLVM IR)优化成main.opt.bc(LLVM IR)。将LLVM二进制文件(.bc)转化成可阅读的LLVM IR文件(.ll)。将可阅读的LLVM IR文件(.ll)转化成LLVM二进制文件(.bc)。LLVM的链接器,将目标文件、动态库、静态库等链接成可执行文件。可以将多个LLVM二进制文件(.bc)链接到一起。原创 2023-12-18 23:19:07 · 776 阅读 · 0 评论 -
LLVM笔记3 LLVM编译流程
缺点:前端和后端没有完全分离,耦合在了一起,因而如果要支持一门新的语言或硬件平台,需要做大量的工作。原创 2023-12-18 22:54:07 · 775 阅读 · 0 评论 -
C++ CRTP介绍
继承自模板类;派生类将自身作为参数传给模板类。// 我们先定义一个模板类作为基类class Base...// 定义一个派生类,这个类继承以自身作为参数的基类...原创 2023-12-16 19:50:12 · 2078 阅读 · 0 评论 -
X86_64 寄存器介绍(不断补充中)
一、通用寄存器RAX:accumulator register, 累加寄存器,通常用于存储函数的返回值,它主要用于输入/输出和大规模的指令运算,AX 寄存器可以说是使用频率最高的寄存器。也可以用于存储其他值,只是通过RAX存储函数返回值属于惯例。 RBX:base register,基址寄存器,一般用于访问内存的基址。BX也被称为数据寄存器,即表明其能够暂存一般数据,同样也可以将BX当做两个独立的 8位寄存器使用即 BH 和BL。BX除了具有暂存数据的功能之外,还用于寻址(即寻找物理地址),这原创 2023-12-16 15:38:25 · 961 阅读 · 0 评论 -
AArch64 ARM64 寄存器介绍
除了上述通用寄存器,还有FPSR(浮点状态寄存器)和 FPCR(浮点控制寄存器)等。X29寄存器和X30寄存器在函数调用和堆栈帧的管理中扮演着关键角色。AArch64架构提供了31个通用寄存器,每个寄存器都可以用作64位X寄存器(X0~X30)或32位W寄存器(W0~W30)。使用X寄存器将导致64位的计算,使用W寄存器将导致32位的计算。EL0、EL1、EL2和EL3是AArch64架构中定义的四个特权级别(Exception Levels),用于支持不同的执行环境和特权级别。原创 2023-12-15 22:47:05 · 8356 阅读 · 3 评论