gcc 源码阅读---语法树

c内核源码阅读准备知识(erlang mudos lua) 准备在以后的博客中主要就是写自己对一些源码的学习和理解。那再阅读之前肯定是要准备一些基础的知识的。请看: 1.         c语言 就目前的项目情况来看,无论是erlang还是java还是现在的mudos,虚拟机部分都是用c来实现的,所以呢,对编写人员的c语言掌握要求挺高,不仅需要熟知语法,还要熟悉一些习惯用法和常用技巧,系统函数的调用也必须清楚。 2.         数据结构 阅读详情

gcc 语法树定义在 tree.def中

Line 41: DEFTREECODE (ERROR_MARK, "error_mark", tcc_exceptional, 0)
    Line 47: DEFTREECODE (IDENTIFIER_NODE, "identifier_node", tcc_exceptional, 0)
    Line 54: DEFTREECODE (TREE_LIST, "tree_list", tcc_exceptional, 0)
    Line 57: DEFTREECODE (TREE_VEC, "tree_vec", tcc_exceptional, 0)
    Line 75: DEFTREECODE (BLOCK, "block", tcc_exceptional, 0)
    Line 122: DEFTREECODE (OFFSET_TYPE, "offset_type", tcc_type, 0)
    Line 135: DEFTREECODE (ENUMERAL_TYPE, "enumeral_type", tcc_type, 0)
    Line 139: DEFTREECODE (BOOLEAN_TYPE, "boolean_type", tcc_type, 0)
    Line 145: DEFTREECODE (INTEGER_TYPE, "integer_type", tcc_type, 0)
    Line 152: DEFTREECODE (BITINT_TYPE, "bitint_type", tcc_type, 0)
    Line 156: DEFTREECODE (REAL_TYPE, "real_type", tcc_type, 0)
    Line 165: DEFTREECODE (POINTER_TYPE, "pointer_type", tcc_type, 0)
    Line 169: DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0)
    Line 172: DEFTREECODE (NULLPTR_TYPE, "nullptr_type", tcc_type, 0)
    Line 177: DEFTREECODE (FIXED_POINT_TYPE, "fixed_point_type", tcc_type, 0)
    Line 186: DEFTREECODE (COMPLEX_TYPE, "complex_type", tcc_type, 0)
    Line 191: DEFTREECODE (VECTOR_TYPE, "vector_type", tcc_type, 0)
    Line 207: DEFTREECODE (ARRAY_TYPE, "array_type", tcc_type, 0)
    Line 217: DEFTREECODE (RECORD_TYPE, "record_type", tcc_type, 0)
    Line 223: DEFTREECODE (UNION_TYPE, "union_type", tcc_type, 0)    /* C union type */
    Line 229: DEFTREECODE (QUAL_UNION_TYPE, "qual_union_type", tcc_type, 0)
    Line 236: DEFTREECODE (VOID_TYPE, "void_type", tcc_type, 0)
    Line 246: DEFTREECODE (FUNCTION_TYPE, "function_type", tcc_type, 0)
    Line 253: DEFTREECODE (METHOD_TYPE, "method_type", tcc_type, 0)
    Line 259: DEFTREECODE (LANG_TYPE, "lang_type", tcc_type, 0)
    Line 265: DEFTREECODE (OPAQUE_TYPE, "opaque_type", tcc_type, 0)
    Line 271: DEFTREECODE (VOID_CST, "void_cst", tcc_constant, 0)
    Line 291: DEFTREECODE (INTEGER_CST, "integer_cst", tcc_constant, 0)
    Line 294: DEFTREECODE (POLY_INT_CST, "poly_int_cst", tcc_constant, 0)
    Line 297: DEFTREECODE (REAL_CST, "real_cst", tcc_constant, 0)
    Line 300: DEFTREECODE (FIXED_CST, "fixed_cst", tcc_constant, 0)
    Line 304: DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0)
    Line 307: DEFTREECODE (VECTOR_CST, "vector_cst", tcc_constant, 0)
    Line 310: DEFTREECODE (STRING_CST, "string_cst", tcc_constant, 0)
    Line 320: DEFTREECODE (RAW_DATA_CST, "raw_data_cst", tcc_constant, 0)
    Line 380: DEFTREECODE (FUNCTION_DECL, "function_decl", tcc_declaration, 0)
    Line 381: DEFTREECODE (LABEL_DECL, "label_decl", tcc_declaration, 0)
    Line 386: DEFTREECODE (FIELD_DECL, "field_decl", tcc_declaration, 0)
    Line 387: DEFTREECODE (VAR_DECL, "var_decl", tcc_declaration, 0)
    Line 388: DEFTREECODE (CONST_DECL, "const_decl", tcc_declaration, 0)
    Line 389: DEFTREECODE (PARM_DECL, "parm_decl", tcc_declaration, 0)
    Line 390: DEFTREECODE (TYPE_DECL, "type_decl", tcc_declaration, 0)
    Line 391: DEFTREECODE (RESULT_DECL, "result_decl", tcc_declaration, 0)
    Line 395: DEFTREECODE (DEBUG_EXPR_DECL, "debug_expr_decl", tcc_declaration, 0)
    Line 398: DEFTREECODE (DEBUG_BEGIN_STMT, "debug_begin_stmt", tcc_statement, 0)
    Line 402: DEFTREECODE (NAMESPACE_DECL, "namespace_decl", tcc_declaration, 0)
    Line 413: DEFTREECODE (IMPORTED_DECL, "imported_decl", tcc_declaration, 0)
    Line 423: DEFTREECODE (NAMELIST_DECL, "namelist_decl", tcc_declaration, 0)
    Line 427: DEFTREECODE (TRANSLATION_UNIT_DECL, "translation_unit_decl",\
    Line 440: DEFTREECODE (COMPONENT_REF, "component_ref", tcc_reference, 3)
    Line 450: DEFTREECODE (BIT_FIELD_REF, "bit_field_ref", tcc_reference, 3)
    Line 457: DEFTREECODE (ARRAY_REF, "array_ref", tcc_reference, 4)
    Line 462: DEFTREECODE (ARRAY_RANGE_REF, "array_range_ref", tcc_reference, 4)
    Line 466: DEFTREECODE (REALPART_EXPR, "realpart_expr", tcc_reference, 1)
    Line 467: DEFTREECODE (IMAGPART_EXPR, "imagpart_expr", tcc_reference, 1)
    Line 479: DEFTREECODE (VIEW_CONVERT_EXPR, "view_convert_expr", tcc_reference, 1)
    Line 482: DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1)
    Line 495: DEFTREECODE (OBJ_TYPE_REF, "obj_type_ref", tcc_expression, 3)
    Line 522: DEFTREECODE (CONSTRUCTOR, "constructor", tcc_exceptional, 0)
    Line 525:    of DEFTREECODE saying how many operands there are.
    Line 532: DEFTREECODE (COMPOUND_EXPR, "compound_expr", tcc_expression, 2)
    Line 535: DEFTREECODE (MODIFY_EXPR, "modify_expr", tcc_expression, 2)
    Line 540: DEFTREECODE (INIT_EXPR, "init_expr", tcc_expression, 2)
    Line 548: DEFTREECODE (TARGET_EXPR, "target_expr", tcc_expression, 4)
    Line 562: DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3)
    Line 565: DEFTREECODE (VEC_DUPLICATE_EXPR, "vec_duplicate_expr", tcc_unary, 1)
    Line 575: DEFTREECODE (VEC_SERIES_EXPR, "vec_series_expr", tcc_binary, 2)
    Line 587: DEFTREECODE (VEC_COND_EXPR, "vec_cond_expr", tcc_expression, 3)
    Line 606: DEFTREECODE (VEC_PERM_EXPR, "vec_perm_expr", tcc_expression, 3)
    Line 629: DEFTREECODE (BIND_EXPR, "bind_expr", tcc_expression, 3)
    Line 637: DEFTREECODE (CALL_EXPR, "call_expr", tcc_vl_exp, 3)
    Line 644: DEFTREECODE (WITH_CLEANUP_EXPR, "with_cleanup_expr", tcc_expression, 1)
    Line 661: DEFTREECODE (CLEANUP_POINT_EXPR, "cleanup_point_expr", tcc_expression, 1)
    Line 713: DEFTREECODE (PLACEHOLDER_EXPR, "placeholder_expr", tcc_exceptional, 0)
    Line 716: DEFTREECODE (PLUS_EXPR, "plus_expr", tcc_binary

如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码? 阅读和解析 TCC(Tiny C Compiler) 的源代码需要对编译器的基本工作原理和代码结构有一定的了解。 阅读详情

相关推荐

从零解析C语言编译器:源码结构与核心模块实现详解

编译器是连接高级编程语言与计算机硬件的关键系统软件,其核心原理是将源代码转换为机器可执行的目标代码。这一过程通常遵循经典的编译流程,包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等阶段。理解编译器的实现,对于深入掌握程序运行机制、提升系统编程能力以及参与大型编译器项目开发具有重要价值。在工程实践中,通过剖析一个中等规模、功能完整的教学型编译器源码,可以将抽象的编译原理概念(如有限自动机、递归下降解析、符号表管理)与具体的C语言代码实现一一对应。本文聚焦于一个用C语言实现的简单C编译器项目

weixin_33811539的博客 404

C++轻量级代码生成工具源码,含词法分析器与抽象语法树构建模块

一套面向嵌入式场景和DSL后端开发的C++代码生成工具源码,不依赖大型编译框架,专注静态结构解析与目标代码输出。核心组件包括lambda表达式处理(lambda.cpp)、可配置语法定义(definable.cpp)、类声明与成员自动生成功能(class.cpp)、语句与表达式AST节点构造(statement.cpp、expression.cpp)、格式化代码写入器(writer.cpp),以及支持复用的编译单元封装(component.cpp)。工程采用清晰的模块化组织:src目录存放实现逻辑,incl

n7o8p的博客 237

Gcc核心源代码分析

Gcc核心源代码分析

使用DDR4控制器实现多通道数据读写

这种高带宽对于大量的数据的应用非常重要。对于Controller/PHY Mode 的选择,我们使用Controller + PHY模式,Xilinx UltraScale/UltraScale+等高端FPGA通常包含硬核PHY,选择Controller + PHY模式可直接利用硬核,降低功耗和延迟,并且此模式的开发更易上手。在Basic页面下,首先勾选上AXI4 Interface选项,我们选用的内存接口速度为2133MHz的ddr4芯片,由于双沿触发,频率为1066MHz,那么周期应为938ps。

weixin_38828382的博客 1364

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 897

qcc51xx如何配置spdif输入

qcc51xx如何配置spdif输入。

Alex_886的博客 1373

ArcGIS+PLUS+InVEST三件套实战:从零搞定土地利用变化与碳储量预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建土地利用变化与碳储量预测的完整研究流水线。通过多情景模拟和生态系统服务评估,提供从数据准备到结果验证的实战指南,助力研究者高效完成生态评估项目。

weixin_30399821的博客 543

Centos7配置阿里云镜像源的教程

查看你的Centos版本,版本过低会导致安装失败,验证网络是否可以连接阿里云镜像,使用阿里云是需要网络的。# wget命令下载: wget [options] [url]# curl命令下载: curl [options] [url]我上面这个图片由于电脑问题是还没有加载完的。删除原来或者之前的yun源。

lyhshs的博客 2260

YOLO26 从零到工业落地全实战:自定义训练+多场景测试+边缘部署预备,踩坑实测100%可复现

很多人觉得训练是核心,其实不是——数据集的质量,直接决定了你模型的上限。我见过太多人,标注不规范、格式错误、数据集划分混乱,然后疯狂调参,训了几百轮还是不收敛,纯属白费功夫。我这次用的是工业零件缺陷检测自定义数据集,共3个类别:划痕、毛刺、变形,总计1200张图片,给大家讲一套标准的、可复现的数据集制作流程,不管你是做工业检测、安防、交通,都能直接套用。很多人拿到数据集,直接用默认命令训练,然后抱怨精度上不去。默认参数是给COCO数据集用的,你的自定义数据集,必须针对性调参,不然根本达不到最优效果。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 569

Buck电源设计常见的一些问题(一)半桥栅极驱动芯片共性失效问题

半桥驱动芯片主要用在器件可应用于电信,数据通信,便携式存储或更低电压系统中的电源转换器,半桥、全桥、推挽、同步降压,正激变换器和同步整流器等方面。当然难免会遇到不少问题。基本上我们在产品开发的过程中都遇到过栅极驱动芯片坏掉的情况,所以找了一些资料,学习学习。也查找查找原因。

小幽余生不加糖 2369

OceanBase全局索引深度解析:分布式环境下的高效索引设计与实战优化指南

全局索引(Global Index)是OceanBase数据库在分布式环境中提供的一种跨分区、跨服务器的索引结构,它允许用户创建跨越多个分区的索引,为分布式查询提供高效的数据访问路径。与局部索引(Local Index)不同,全局索引不是与表分区一一对应的,而是作为一个独立的逻辑结构存在。 在分布式数据库系统中,全局索引解决了以下几个关键问题: 跨分区查询性能:当查询条件不包含分区键时,全局索引可以避免全表扫描 唯一性约束维护:全局索引能够保证索引键在全局范围内的唯一性 分布式事务支持:全局索引与主表数

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 717

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: gcc 源码阅读--全局符号表管理
下一篇: gcc源码阅读--gimple 介绍
GoldKey
博客等级 码龄25年 82粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoldKey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值