![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GCC源代码分析
文章平均质量分 84
Lazy_Linux
GUN软件工具链爱好者,《深入分析GCC》作者
展开
-
GCC-4.4.0 机器描述文件中的指令模板
本文简单介绍了GCC机器描述文件中指令模板的基本内容,有兴趣的读者可以打开对应的机器描述文件(例如,针对于Intel的i386处理器架构所提供的机器描述文件为gcc/config/i386/i386.md,针对于MIPS处理器的机器描述文件为gcc/config/mips/mips.md),结合上述内容对照分析。原创 2024-06-14 16:00:53 · 1934 阅读 · 0 评论 -
GCC-4.4.0 词法分析简介
该结果描述了词法分析时,对源文件中的代码进行逐一分析,形成词法符号的过程。由于词法分析的过程已经确定了该词法元素不但是一个标识符,而且是一个语言保留的标识符(即关键字),因此词法分析的过程中就为该标识符创建一个标识符节点,该标识符的名称为“int”,如上面第2行所示,其内存地址在0x b7cfd348。而第二类信息则是以^@开头的行,描述了词法分析的过程中,在解析出了当前词法符号的信息后,是否需要创建相应的AST树节点,如果需要创建,则创建相应的树节点信息,如果不需要创建,则没有该部分的输出信息。原创 2024-05-29 20:35:51 · 2033 阅读 · 0 评论 -
GCC词法语法分析——AST输出及图示
二. 编译GCC源代码,生成新的编译程序cc1gcc提供了-fdump-tree-original、-fdump-tree-all等选项,可以输出gcc处理源代码过程中的AST及GIMPLE中间表示信息。例如使用-fudmp-tree-original就可以输出GCC进行词法/语法解析后所生成的AST信息,然而该AST信息过于繁杂,不便于分析,本文通过在GCC源代码中增加一些调试语句,从而输出特定函数的AST信息。一. gcc源代码中增加调试代码。原创 2024-05-24 22:23:37 · 1066 阅读 · 0 评论 -
GCC 4.4.0中添加自定义的选项
该定义表示声明一个选项-mytest,其中Target表示该选项是一个目标机器相关的选项,Var(MY_TEST_OPTION)表示该选项的值在代码中会使用变量MY_TEST_OPTION保存,Save表示gcc在解析该选项时会使用cl_target_option结构体来保存该选项的值。假设目前需要在i386平台上增加一个自定选项-mytest,该选项的值可以是0或者1,可以按照如下步骤进行添加。该语句中使用的变量名称MY_TEST_OPTION就是上述第一步声明的选项变量。原创 2024-05-23 11:46:59 · 451 阅读 · 0 评论 -
GCC-4.4.0源代码结构简介
例如,在gcc/目录以下几个目录,分别处理Ada、Java、Fortran、Object-C及C++的词法分析、语法分析、语义分析等典型的语言相关的功能。这部分代码也通常称为GCC前端处理。由于C语言是GCC支持的最基础的语言,所以C语言的前端处理的部分代码在gcc目录下。gcc/adagcc/javagcc/objcgcc/cp总体说来,GCC(编译程序通常称为cc1)的功能可以分为如下几个阶段(1)对输入的高级语言源代码进行词法语法语义分析,构造AST。原创 2024-05-23 16:56:42 · 1008 阅读 · 1 评论