摘要:
这编译的最后一步,也就是生成目标代码,则必须跟特定CPU架构相关。 这就是编译器的后端。不过,后端不只是简单地生成目标代码,它还要完成与机器相关的一些优化工作,确保生成的目标代码的性能最高。 本讲将从机器相关的优化入手,看看编译器如何通过指令选择/寄存器分配/指令排序和基于机器代码的优化等步骤,完成 阅读全文
摘要:
常见的代码优化方法 对代码做优化的方法有很多,可按照下面两个维度进行分类: 第一个分类维度,是机器无关的优化与机器相关的优化。 机器无关的优化与硬件特征无关,比如把常数值在编译期计算出来(常数折叠)。而机器相关的优化则需要利用某种硬件特有的特征,比如SIMD指令可以在一条指令里完成多个数据的计算。 阅读全文
摘要:
IR,中间代码(Intermediate Representation,有时也称为Intermediate Code,IC),它是编译器中很重要的一种数据结构。编译器在做完前端工作以后,首先就生成IR,并在此基础上执行各种优化算法,最后再生成目标代码。 IR的用途和层次 设计IR的目的, 是要满足编 阅读全文
摘要:
在语义分析之后,编译过程就开始进入了中后端。 经过前端阶段的处理分析,编译器已经充分理解了源代码的含义,准备好把前端处理的结果(带有标注信息的 AST、符号表)翻译成目标代码了。 如果想做好翻译工作,编译器必须理解目标代码。而要理解目标代码,它就必须要理解目标代码是如何被执行的。通常情况下,程序有两 阅读全文
摘要:
python的运行时机制的核心 -- python对象机制的设计 理解字节码的执行过程 用 GDB 跟踪执行一个简单的示例程序,它只有一行:“a=1”。 对应的字节码如下。其中,前两行指令实现了"a = 1"的功能(后两行是根据Python的规定,在执行完一个模块之后,缺省返回一个None值) PS 阅读全文
摘要:
首先了解下从AST到生成字节码的整个过程: 编译过程 Python编译器把词法分析和语法分析叫做 "解析(Parse)", 并且放在Parser目录下。 从AST到生成 字节码的过程,才叫做 "编译(Compile)" Python编译工作的主干代码是在**Python/compile.c **, 阅读全文
摘要:
Python编译器 GDB跟踪python编译器的执行过程,在tokenizer.c的tok_get()函数中打一个断点,通过GDB查看python的运行,使用bt命令打印输出,结果如下图所示 整理后可得到: 该过程就是运行python并执行到词法分析环节的一个执行路径: 1.首先是 python. 阅读全文
摘要:
编译原理概述 编译,就是一个把源代码变成目标代码的过程。 如果源代码编译后直接在操作系统上运行,那目标代码就是汇编代码,再通过汇编和链接的过程形成可执行文件,然后通过加载器加载到操作系统里执行 如果编译后在解释器中执行,那目标代码就可以不是汇编代码,而是一种解释器可以理解的中间形式的代码即可。 编译 阅读全文
摘要:
参考:https://segmentfault.com/a/1190000037498373 ubuntu系统:在/etc/hosts文件中增加以下内容: windows系统:C:\Windows\System32\drivers\etc中打开host文件 # GitHub Start 140.82 阅读全文
摘要:
UML画图工具 推荐:Drawio 参考:https://blog.csdn.net/jsm1010/article/details/112920539 安装命令:sudo snap install drawio 推荐理由:功能齐全,界面简洁 界面: 思维导图 推荐:xmind 官网:https:/ 阅读全文