<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GoldKey</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GoldKey]]></copyright><item><title><![CDATA[gcc 源码分析：从IR-RTL 到汇编输出]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149443647</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149443647</guid><author>GoldKey</author><pubDate>Fri, 18 Jul 2025 13:57:09 +0800</pubDate><description><![CDATA[该代码片段展示了GCC编译器后端在RTL优化和寄存器分配完成后生成汇编代码的过程。主要内容包括： 定义了pass_final类来执行最终汇编输出阶段，调用rest_of_handle_final函数处理汇编生成。 rest_of_handle_final函数负责： 处理调试标记 调用assemble_start_function开始函数汇编 通过final_1函数遍历RTL指令并生成汇编 处理函数结尾和异常表输出 final_1函数： 初始化指令识别器 遍历RTL指令链 处理基本块和调试信息 调用final]]></description><category></category></item><item><title><![CDATA[gcc 源码分析--从gimple 到IR-RTL]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149442509</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149442509</guid><author>GoldKey</author><pubDate>Fri, 18 Jul 2025 13:12:56 +0800</pubDate><description><![CDATA[GCC编译器将GIMPLE中间表示转换为RTL中间表示的过程分为两部分：一部分是与目标架构无关的通用转换（如标签生成等），另一部分则依赖于目标架构描述文件。转换过程中会进行参数类型检查，并且一条GIMPLE语句可能对应多条RTL指令。该转换由pass_expand类实现，主要处理SSA形式转换、变量扩展、指令生成等工作，最终生成完整的RTL代码。]]></description><category></category></item><item><title><![CDATA[gcc 源码分析：机器描述文件]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149441971</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149441971</guid><author>GoldKey</author><pubDate>Fri, 18 Jul 2025 12:21:47 +0800</pubDate><description><![CDATA[GCC后端机器描述文件位于gcc/config目录中，各硬件平台有独立子目录，如xtensa平台包含xtensa.md（机器描述）、xtensa.h和xtensa.c三个核心文件。其中.h/.c文件定义目标机器的存储布局、调用规范等结构体targetm；.md文件则通过指令模板、属性定义等将机器特性引入编译器，指导IR-RTL到汇编的转换。关键转换过程分为两个阶段：GIMPLE到SPN的机器无关映射，以及SPN到IR-RTL的机器相关转换（通过匹配.md文件中命名的define_insn模板）。optabs]]></description><category></category></item><item><title><![CDATA[gcc 源码阅读---编译器后端实现的关键数据结构]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149440601</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149440601</guid><author>GoldKey</author><pubDate>Fri, 18 Jul 2025 11:26:13 +0800</pubDate><description><![CDATA[摘要： 本文介绍了RTL（Register Transfer Language）的核心数据结构及其在编译器中的关键作用。RTL是GCC编译器中间表示的重要组成部分，用于描述机器指令和操作。文章详细解析了rtx_def结构体，包括其类型分类（RTX_COMPARE、RTX_COMM_ARITH等）、标志位（jump、call、volatil等）以及联合体字段（如insn_uid、symbol_ref_flags）。此外，还说明了从GIMPLE到RTL的转换过程，以及最终生成汇编代码的关键数据结构insn_da]]></description><category></category></item><item><title><![CDATA[gcc 源码分析---gimple 程序流程]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149352026</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149352026</guid><author>GoldKey</author><pubDate>Tue, 15 Jul 2025 13:58:10 +0800</pubDate><description><![CDATA[这段代码展示了GCC编译器前端中从AST到GIMPLE中间表示的转换过程。主要功能包括： 编译流程控制：通过do_compile()和compile_file()函数启动编译过程，调用finalize_compilation_unit()完成编译单元处理。 符号分析：analyze_functions()函数负责分析函数符号，处理函数属性、别名对、可达性分析等，构建调用图。 函数转换：cgraph_node::analyze()将函数转换为GIMPLE表示，包括处理thunk函数、多版本函数调度器等。 GI]]></description><category></category></item><item><title><![CDATA[gcc 源码分析--gimple 关键数据结构]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149351611</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149351611</guid><author>GoldKey</author><pubDate>Tue, 15 Jul 2025 13:15:58 +0800</pubDate><description><![CDATA[摘要：本文介绍了GIMPLE中间表示（IR）的操作码定义及其基础结构。GIMPLE作为GCC编译器的重要中间语言，包含了多种操作指令类型，如控制流（GIMPLE_COND、GIMPLE_GOTO）、赋值（GIMPLE_ASSIGN）、函数调用（GIMPLE_CALL）以及OpenMP并行化指令（GIMPLE_OMP系列）等。其基础结构struct gimple通过位字段标识语句类型、警告状态、修改标志等属性，并包含操作数数量、位置信息和基本块指针。此外，GIMPLE通过继承体系（如gimple_statem]]></description><category></category></item><item><title><![CDATA[gcc源码阅读--gimple 介绍]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149331453</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149331453</guid><author>GoldKey</author><pubDate>Mon, 14 Jul 2025 15:24:21 +0800</pubDate><description><![CDATA[摘要：GENERIC是一种规范化的AST表示形式，旨在建立与前端语言无关的统一AST标准。在GCC编译器中，前端语言通常会将AST/GENERIC转换为GIMPLE中间表示。GIMPLE是一种三地址码形式的语言无关中间表示，相比树形结构的AST/GENERIC，它具有线性序列的特点，更利于后续编译优化。从AST到GIMPLE的转换包含高级GIMPLE和低级GIMPLE两个阶段，最终会消除作用域等相关语句，形成更简洁的中间表示形式。这一转换过程实现了从语言相关到语言无关的过渡，为编译器后端处理提供了统一基础。]]></description><category></category></item><item><title><![CDATA[gcc 源码阅读---语法树]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149330214</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149330214</guid><author>GoldKey</author><pubDate>Mon, 14 Jul 2025 14:46:31 +0800</pubDate><description><![CDATA[GCC语法树节点类型定义摘要 GCC编译器在tree.def文件中定义了丰富的语法树节点类型，涵盖编译器前端到后端处理的各类语法结构。主要分类包括： 基础节点类：ERROR_MARK、IDENTIFIER_NODE等异常标记节点 类型节点：INTEGER_TYPE、POINTER_TYPE等30+种数据类型 常量节点：INTEGER_CST、REAL_CST等10+种常量类型 声明节点：FUNCTION_DECL、VAR_DECL等20+种声明类型 表达式节点：包含算术运算(PLUS_EXPR)、比较运算(]]></description><category></category></item><item><title><![CDATA[gcc 源码阅读--全局符号表管理]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149329624</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149329624</guid><author>GoldKey</author><pubDate>Mon, 14 Jul 2025 14:23:02 +0800</pubDate><description><![CDATA[摘要： 本文分析了GCC编译器中的符号表管理机制，重点研究了symtab_node、cgraph_node和varpool_node三个核心类的定义及其作用。symtab_node是所有符号表条目的基类，cgraph_node用于管理函数调用图，varpool_node处理静态变量。文章详细描述了这些类的成员变量和方法，包括符号注册、引用管理、别名处理等功能，并梳理了全局符号和函数注册到全局符号表的过程。通过分析可以看出，GCC采用分层架构管理符号信息，symtab_node提供基础功能，而cgraph_n]]></description><category></category></item><item><title><![CDATA[gcc源码阅读--语法解析]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149328786</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149328786</guid><author>GoldKey</author><pubDate>Mon, 14 Jul 2025 14:00:01 +0800</pubDate><description><![CDATA[这篇文章分析了GCC编译器前端语法解析的核心流程，主要包含以下内容： 语法解析入口函数c_common_parse_file，负责初始化预处理并循环处理每个输入文件 解析单个源文件的c_parse_file函数，处理PCH预编译头文件并初始化异常处理 解析翻译单元(translation unit)的c_parser_translation_unit函数，处理外部声明和GNU扩展语法 解析外部声明(declaration/definition)的c_parser_external_declaration函数]]></description><category></category></item><item><title><![CDATA[gcc 源码阅读--C语言预处理]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149310735</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149310735</guid><author>GoldKey</author><pubDate>Sun, 13 Jul 2025 16:28:04 +0800</pubDate><description><![CDATA[此hash桶是自动扩展的，在ht搜索函数ht_lookup_with_hash中，若发现整个hash table超过3/4都满了，就会主动扩展此hash table(重新分配，复制，释放原有的)。alloc_node函数是用来分配节点内存的，分配后hashnode[]数组中的指针，也就指向这个内存中的元素，在ht搜索过程中(ht_lookup_with_hash),若发现需要新。/* 当前正在处理的语法符号c_token的地址，这里除了初始化时，应该指向 tokens_buf[0] */]]></description><category></category></item><item><title><![CDATA[gcc 源码阅读---程序入口]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/149310044</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/149310044</guid><author>GoldKey</author><pubDate>Sun, 13 Jul 2025 15:03:27 +0800</pubDate><description><![CDATA[gcc 是个驱动型程序，完成c/c++转为汇编程，调用汇编程序转为.o文件，再调用link程序生成elf执行程序。在gcc 默认编译中，会编译出gcc/g++,cc1这几个程序，cc1程序是真正的将c编译为汇篇程序，这是整个编译的核 心。最后调用 toplev.cc。]]></description><category></category></item><item><title><![CDATA[MFC 中创建并显示二维码]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/134531694</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/134531694</guid><author>GoldKey</author><pubDate>Tue, 21 Nov 2023 14:42:16 +0800</pubDate><description><![CDATA[/ 位图显示过程中重要的颜色数，0表示所有的颜色都重要。// 位图数据的起始位，位图文件头+位图信息头+调色板的大小。// 位图的高度，以像素为单位。// 位图压缩格式，必须是0，不压缩。// 位图的宽度，以像素为单位。// 位图的大小，以字节为单位。// 位图文件保留字，必须为0。// 位图文件保留字，必须为0。]]></description><category></category></item><item><title><![CDATA[GCC 学习]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/134507380</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/134507380</guid><author>GoldKey</author><pubDate>Mon, 20 Nov 2023 14:25:07 +0800</pubDate><description><![CDATA[这是个不错资料网站，有兴趣的可以了解下。GCC]]></description><category></category></item><item><title><![CDATA[Flex & bison 学习好代码]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/134315833</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/134315833</guid><author>GoldKey</author><pubDate>Thu, 09 Nov 2023 16:57:40 +0800</pubDate><description><![CDATA[但是要会用flex &bison的话，容易理解一些。可以生成make ，这样就可以做实验了。计算机的重要课程编译原理很难学吧，在cygwin 下面或者linux。有些好的项目可以帮助我们，比如。可以帮我们，下载 下来。]]></description><category></category></item><item><title><![CDATA[SVN 服务器建立]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/134283882</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/134283882</guid><author>GoldKey</author><pubDate>Wed, 08 Nov 2023 10:55:54 +0800</pubDate><description><![CDATA[SVN 服务器建立]]></description><category></category></item><item><title><![CDATA[VS2019 编译Postgrsql 的windows平台代码和调试]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/134280920</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/134280920</guid><author>GoldKey</author><pubDate>Wed, 08 Nov 2023 09:16:04 +0800</pubDate><description><![CDATA[另外说明，需要提前安装ACtivePertl 与Openssl 的windows 版本。这里可以下载openssl,将openssl 目录加进系统目录。3.打开目录中生成的  pgsql.sln。这里可以下载active perl。2.在postgrsql 的目录中执行。]]></description><category></category></item><item><title><![CDATA[C++ 实现Web REST 功能]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/134182035</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/134182035</guid><author>GoldKey</author><pubDate>Thu, 02 Nov 2023 14:47:13 +0800</pubDate><description><![CDATA[HTTP Web 服务器REST PostgrSQL ]]></description><category></category></item><item><title><![CDATA[嵌入式，系统开发,从bootload 到嵌入式OS]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/2170034</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/2170034</guid><author>GoldKey</author><pubDate>Tue, 11 Mar 2008 16:12:00 +0800</pubDate><description><![CDATA[嵌入式开发关于软件 的部分，首先第一层是bootloader,可能大家会认为一开始是嵌入式OS.嵌入式bootloader相当于PC上的bios 程 序， 这个软件是用来初始化硬件，并加载OS的。但是嵌入式设备上的bootloader没有pc的那么复杂，同时功能上也有所不同。基本上，bootloader会做下面几个事情:（1）       初始化RAM（必需）：bootloader必须能够初始]]></description><category></category></item><item><title><![CDATA[SPDIF]]></title><link>https://blog.youkuaiyun.com/GoldKey/article/details/1893088</link><guid>https://blog.youkuaiyun.com/GoldKey/article/details/1893088</guid><author>GoldKey</author><pubDate>Mon, 19 Nov 2007 17:33:00 +0800</pubDate><description><![CDATA[SPDIF 是sony & philips确定的数字音频通信接口标准,一般也叫 IEC958.音频格式:一般是16位数据，也可以支持到24位支持的音频抽样:44.1KHZ48KHZ32KHZ单方式传输从发送方发给接受方包括控制信息V(validity )bitU(user) bitC(channel status)bitP(parity) bit编码格式biphase mark 带宽100KHZ ]]></description><category></category></item></channel></rss>