<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>编译原理 on Dan`s Blog</title>
		<link>https://blog.dansec.vip/tags/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/</link>
		<description>Recent content in 编译原理 on Dan`s Blog</description>
		<generator>Hugo</generator>
		<language>zh-CN</language>
		
		
		
		
			<lastBuildDate>Thu, 14 Nov 2024 14:03:12 +0800</lastBuildDate>
		
			<atom:link href="https://blog.dansec.vip/tags/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>编译原理-基本知识</title>
				<link>https://blog.dansec.vip/p/compilationprinciplebaseknowledge/</link>
				<pubDate>Thu, 14 Nov 2024 14:03:12 +0800</pubDate>
				<guid>https://blog.dansec.vip/p/compilationprinciplebaseknowledge/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://d4n-picture-database.oss-cn-beijing.aliyuncs.com/img/image-20241114140514841.png&#34; alt=&#34;image-20241114140514841&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;表格管理&#34;&gt;表格管理&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;作用：用来记录源程序的各种信息以及编译过程中的各种状况&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;与编译前三阶段有关的表格有：符号表、常数表、标号表、分程序入口表、中间代码表等&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;符号表&#34;&gt;符号表&lt;/h2&gt;&#xA;&lt;p&gt;用来登记源程序中的常量名变量名、发数组名、过程名等，记录它们的性质、定义和引用情况&lt;/p&gt;</description>
			</item>
			<item>
				<title>编译原理-目标代码生成</title>
				<link>https://blog.dansec.vip/p/compilationprinciplecodegeneration/</link>
				<pubDate>Mon, 11 Nov 2024 17:15:43 +0800</pubDate>
				<guid>https://blog.dansec.vip/p/compilationprinciplecodegeneration/</guid>
				<description>&lt;h1 id=&#34;目标代码生成&#34;&gt;目标代码生成&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;任务&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;把经过优化的中间代码转化成特定机器上的低级语言代码&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;目标代码的形式&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;绝对指令代码：可立即执行的目标代码。&lt;/li&gt;&#xA;&lt;li&gt;汇编指令代码：汇编语言程序，需要通过汇编程序汇编后才能运行。&lt;/li&gt;&#xA;&lt;li&gt;可重定位指令代码：先将各目标模块连接起来，确定变量、常数在主存中的位置，装入主存后才能成为可以运行的绝对指令代码。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>编译原理-优化</title>
				<link>https://blog.dansec.vip/p/compilationprincipleoptimize/</link>
				<pubDate>Mon, 11 Nov 2024 16:59:47 +0800</pubDate>
				<guid>https://blog.dansec.vip/p/compilationprincipleoptimize/</guid>
				<description>&lt;h1 id=&#34;优化&#34;&gt;优化&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;任务&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对前面产生的中间代码进行加工变换，以期在最后阶段能产生更为高效的目标代码。&#xA;&lt;ul&gt;&#xA;&lt;li&gt;原则:等价变换&lt;/li&gt;&#xA;&lt;li&gt;主要关注：公共子表达式的提取、合并已知量、删除无用语句、循环优化等。&#xA;&lt;ul&gt;&#xA;&lt;li&gt;循环优化：将循环内的语句优化为必需语句&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;优化举例&#34;&gt;优化举例&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://d4n-picture-database.oss-cn-beijing.aliyuncs.com/img/image-20241111170905973.png&#34; alt=&#34;image-20241111170905973&#34;&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>编译原理-语义分析和中间代码生成</title>
				<link>https://blog.dansec.vip/p/semanticanalysis/</link>
				<pubDate>Fri, 08 Nov 2024 19:41:32 +0800</pubDate>
				<guid>https://blog.dansec.vip/p/semanticanalysis/</guid>
				<description>&lt;h1 id=&#34;语义分析和中间代码生成&#34;&gt;语义分析和中间代码生成&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;任务&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对语法分析识别出的各类语法范畴，分析其含义，进行和初步翻译，产生介于源代码和目标代码之间的一种代码。&lt;/li&gt;&#xA;&lt;li&gt;分为两阶段工作：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对每种语法范畴进行静态语义检查&lt;/li&gt;&#xA;&lt;li&gt;若语义正确，就进行&lt;a href=&#34;https://blog.dansec.vip/p/semanticanalysis/#middleCode&#34;&gt;中间代码&lt;/a&gt;的翻译&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;span id=&#34;middleCode&#34;&gt;中间代码&lt;/span&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;中间代码形式有：四元式、三元式、逆波兰式&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;中间代码生成举例：&lt;/p&gt;</description>
			</item>
			<item>
				<title>编译原理-语法分析</title>
				<link>https://blog.dansec.vip/p/grammaranalysis/</link>
				<pubDate>Fri, 08 Nov 2024 17:13:30 +0800</pubDate>
				<guid>https://blog.dansec.vip/p/grammaranalysis/</guid>
				<description>&lt;ul&gt;&#xA;&lt;li&gt;任务&#xA;&lt;ul&gt;&#xA;&lt;li&gt;在&lt;a href=&#34;https://d4n-sec.github.io/p/lexicalanalysis/&#34;&gt;词法分析&lt;/a&gt;的基础上，根据语言的&lt;a href=&#34;https://blog.dansec.vip/p/grammaranalysis/#grammarRules&#34;&gt;&lt;em&gt;&lt;strong&gt;语法规则&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;，把单词符号组成的各类&lt;a href=&#34;https://blog.dansec.vip/p/grammaranalysis/#grammarUnits&#34;&gt;语法单位&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;span id=&#34;grammarRules&#34;&gt;语法规则&lt;/span&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;语言的规则，又称为文法：规定单词如何构成&lt;a href=&#34;https://blog.dansec.vip/p/grammaranalysis/#grammarUnits&#34;&gt;语法单位&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;span id=&#34;grammarUnits&#34;&gt;语法单位&lt;/span&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;语法单位包括：短语、子句、语句、过程、程序&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;语法规则如何表示&#34;&gt;语法规则如何表示&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;BNF（巴科斯范式）：&lt;code&gt;A::=B|C&lt;/code&gt; -&amp;gt; 表示A定义为B或C&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;语法分析的方法&#34;&gt;语法分析的方法&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;推导（Derive）和归约（Reduce）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;推导&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;最左推导、最右推导&#xA;&lt;ul&gt;&#xA;&lt;li&gt;最&lt;em&gt;&lt;strong&gt;右&lt;/strong&gt;&lt;/em&gt;推导：每次推导都把最&lt;em&gt;&lt;strong&gt;右&lt;/strong&gt;&lt;/em&gt;方的&lt;strong&gt;字母&lt;/strong&gt;按照规则&lt;strong&gt;转化为标识符或者常量&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;归约（推导的逆过程）&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;最右归约、最左归约&#xA;&lt;ul&gt;&#xA;&lt;li&gt;最&lt;em&gt;&lt;strong&gt;左&lt;/strong&gt;&lt;/em&gt;归约：每次归约都把最&lt;em&gt;&lt;strong&gt;左&lt;/strong&gt;&lt;/em&gt;方的&lt;strong&gt;标识符或者常量&lt;/strong&gt;按照规则转化为&lt;strong&gt;字母&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>编译原理-词法分析</title>
				<link>https://blog.dansec.vip/p/lexicalanalysis/</link>
				<pubDate>Fri, 08 Nov 2024 17:06:57 +0800</pubDate>
				<guid>https://blog.dansec.vip/p/lexicalanalysis/</guid>
				<description>&lt;h1 id=&#34;关于&#34;&gt;关于&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;任务&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;输入源程序，对构成源程序的字符串进行扫描和分解，识别出一个个的&lt;a href=&#34;https://blog.dansec.vip/p/lexicalanalysis/#word&#34;&gt;单词&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;词法分析依照词法规则，识别出正确的单词，&lt;a href=&#34;https://blog.dansec.vip/p/lexicalanalysis/#trans&#34;&gt;转换&lt;/a&gt;为统一规格，备用&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;span id=&#34;word&#34;&gt;单词&lt;/span&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;高级语言中有实在意义的最小语法单位，字符组成（关键字？）&lt;/li&gt;&#xA;&lt;li&gt;包括：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;基本字：&lt;code&gt;void int float&lt;/code&gt;等&lt;/li&gt;&#xA;&lt;li&gt;标识符：变量名，函数名等&lt;/li&gt;&#xA;&lt;li&gt;整常数：例如 a*50 中的50&lt;/li&gt;&#xA;&lt;li&gt;运算符：&lt;code&gt;+ - * / =&lt;/code&gt;等&lt;/li&gt;&#xA;&lt;li&gt;界限符：&lt;code&gt;{} &#39;&#39; ; ()&lt;/code&gt;等&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;span id=&#34;trans&#34;&gt;转换&lt;/span&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对基本字、运算符、界限符的转换&lt;/li&gt;&#xA;&lt;li&gt;标识符的转换&lt;/li&gt;&#xA;&lt;li&gt;常数的转换&lt;/li&gt;&#xA;&lt;li&gt;转换完成后的格式：&lt;em&gt;&lt;strong&gt;（类号，内码）&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>编译原理</title>
				<link>https://blog.dansec.vip/p/compilationprinciple/</link>
				<pubDate>Fri, 08 Nov 2024 17:02:31 +0800</pubDate>
				<guid>https://blog.dansec.vip/p/compilationprinciple/</guid>
				<description>&lt;h1 id=&#34;编译程序的工作&#34;&gt;编译程序的工作&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://d4n-sec.github.io/p/LexicalAnalysis/&#34;&gt;词法分析&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;语法分析&lt;/li&gt;&#xA;&lt;li&gt;语义分析和中间代码生成&lt;/li&gt;&#xA;&lt;li&gt;优化&lt;/li&gt;&#xA;&lt;li&gt;目标代码生成&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://d4n-picture-database.oss-cn-beijing.aliyuncs.com/img/image-20241108164207108.png&#34; alt=&#34;image-20241108164207108&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;上图中的语义分析一般来说会被融合进语法分析中&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
