gcc 源代码分析-前端篇3
3. GCC怎样函表示一个函数
对c语言来说。函数是其核心,全部的东西都在环绕着函数在转。对于一个函数来说。它基本的一些特性例如以下:
1. 有一个返回值,在这里我们没有把返回值的函数觉得它的返回值是void;
2. 它有传入的參数。而这个參数个数不确定。可多可少,也能够没有;
3. 它有一个函数名称,这个名称具有唯一性,也就是同一个project,不能有名称一样的多个函数。
4. 它有函数运行体;
对于函数来说,还是通过struct tree_decl结构来表示:
filename:函数所在文件名称。
linenum: 函数所在的行号。
print_name: 函数名称,asii 表示;
assembler_name: 函数名的内部名称,asii表示;
name: 函数的名字。用一个struct tree_identifier结构来表示;
common::type 表示函数类型,这个实际上是一个tree_type的结构来表示。它的common::type表示函数的返回类型
它实际上就是在初始化时生成的表示数据类型的节点,假设是int型。它就是一个int 型节点;
它的values 成员记录的是函数的參数。是一个struct tree_int_cst类型,通过它的chain把几个參数串连起来。
对于这种一个源码:
void main()
{
}
它最后转成一棵语法树,可是这个树仅仅有一个节点,就是表示函数的节点,它实际上是一个struct tree_decl结构。它的name成员表示
函数的名称,type 成员里面既记录了函数返回值。也记录了函数的參数。
gcc 源代码分析-前端篇3的更多相关文章
- gcc 源代码分析-前端篇2
2. 对ID及保留字的处理 在c语言中,系统预留了非常多keyword.也被称为保留字,比方表示数据类型的int,short,char,控制分支运行的if,then等. 不论什么keyword, ...
- Android系统进程Zygote启动过程的源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6768304 在Android系统中,所有的应用 ...
- Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了A ...
- Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6633311 在上一篇文章中,我 们分析了And ...
- 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视GCC编译全过程 | 百篇博客分析OpenHarmony源码| v57.01
百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...
- JAVA随笔篇一(Timer源代码分析和scheduleAtFixedRate的使用)
写完了基础篇,想了非常久要不要去写进阶篇.去写JSP等等的用法.最后决定先不去写.由于自己并非JAVA方面的大牛.眼下也在边做边学,所以决定先将自己不懂的拿出来学并记下来. Timer是Java自带的 ...
- Monkey源代码分析番外篇之Android注入事件的三种方法比較
原文:http://www.pocketmagic.net/2012/04/injecting-events-programatically-on-android/#.VEoIoIuUcaV 往下分析 ...
- 【原】让H5页面适配移动设备全家 - 前端篇 - PPT
7月份在部门内给设计中心的同事们带来<让H5页面适配移动设备全家 - 设计师篇 - PPT>的分享,在视觉和交互稿上提出页面适配的建议及提升页面体验的好处,促进前端和设计双方更好的合作,同 ...
- android-plugmgr源代码分析
android-plugmgr是一个Android插件加载框架,它最大的特点就是对插件不需要进行任何约束.关于这个类库的介绍见作者博客,市面上也有一些插件加载框架,但是感觉没有这个好.在这篇文章中,我 ...
随机推荐
- linux系统下解决getch()输入数值不回显示
在linux系统下开发C 程序却会遇到系统不支持conio.h头文件,无法使用getch()不回显函数.下面就演示如何构建函数实现数值输入不回显. #include <stdio.h> # ...
- MSBuild Tools解决办法
每次在CI上通过Msbuild做发布,基本都会碰到下面的问题 error MSB4019: 未找到导入的项目"C:\Program Files (x86)\MSBuild\Microsoft ...
- 发放福利:原价135元/年的阿里云CDN流量包(500GB)免费送
不少朋友看过本站推荐的两篇文章:1. <阿里云全民云计算活动:云服务器ECS二折起>2. <阿里云双11优惠活动-爆款云服务器> 大部分人都说不错,很快下单购买了服务器,后续使 ...
- 一个ICON图标的转换程序
抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换.具体的程序就在下面,如果看的人多,过两天再把思路写一下.废话不说,见代码. ...
- update and的坑
开发那边抛出个有意思的问题,下面的现象如何解释呢? mysql> select * from A; +------+------+ | t1 | t2 | +------+------+ | 1 ...
- invalid LOC header
今天在SSM整合的时候,报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].但是就是不明白原因所 ...
- P3092 [USACO13NOV]没有找零No Change
题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 ...
- Struts2-046验证脚本
下面分享一下Struts2-046验证的python脚本 #encoding:utf-8 import urllib2 from poster.encode import multipart_enco ...
- sklearn的简单使用
import numpy as np from sklearn import datasets from sklearn.cross_validation import train_test_spli ...
- 安卓自定义控件(一)Canvas、Paint、Shader、Xfermode
关于自定义控件,之前就写过一篇自定义控件,上图下字的Button,图片任意指定大小,但是使用效果还是让人感觉不幸福,这次索性彻彻底底地对自定义控件做一次彻彻底底的总结. 我会花4篇博客来介绍自定义控件 ...