看gcc-1.40有段时间了,14年左右看了一段时间,15年左右看了一段时间。
现在可以说基本上明白了gcc的大部分代码。
如果说能快速的明白其中的原理,总结我看代码的方法捷径我列举以下几条。
第一,gcc版本低,这是成功的前提,也是一条捷径。
第二,分析最基本的hello.c文件,就一条函数调用,但是已经足够。
第三,发现了debug_rtx ()函数和debug_tree ()函数。...
分类:
其他好文 时间:
2015-01-09 20:59:49
阅读次数:
294
函数的工作借助于栈。
栈在内存中是一块特殊的存储空间,它的存储原则是“先进后出”,最先被存储的数据最后被释放。
esp被称为栈顶指针,ebp称为栈底指针,通过这两个指针寄存器保存当前栈的起始地址与结束地址。
esp与ebp之间所构成的空间便成为栈帧。通常,在VC++中,栈帧中可以寻址的数据有局部变量、函数返回地址、函数参数等。不同的两次函数调用,所形成的栈帧也不同。当由一个函数进入到...
分类:
其他好文 时间:
2015-01-09 15:34:44
阅读次数:
258
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。
一、函数的调用语法
函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:
$(
)
或是
${
}
这里,就是函数名,make支持的函数不多。是函数的参数,参数间以逗...
分类:
其他好文 时间:
2015-01-09 14:16:56
阅读次数:
212
SICP 习题 2.20 引入了一种新的函数调用方式,就是带 . 符号的不确定参数调用方式。题中也讲到了, Scheme支持这种调用方式,如果我们把方法定义成下面这个样子(define (my-method first-p . others-p)
;…..
)
我们就可以在调用方法my-method时传入大于2的任何数量的参数,比如:(my-method 1 2 3 4 5 6)这时my-...
分类:
其他好文 时间:
2015-01-09 00:16:31
阅读次数:
290
在编写linux内核模块的时候,有时候我们需要调用一只内核模块里面的函数,然而如果是在不同目录下面编译生成的内核模块,此时A模块去调用B模块的函数时候会出现函数未定义,无法调用的情况。那么以前我是在同一个目录下面,先后写两个makefile,然后编译生成两个不同的内核模块,这种方式可以正常实现A模块调用B模块里面的函数,不过非常麻烦。本博文将会针对这种情况提出一种可以同时生成多个内核模块。...
分类:
系统相关 时间:
2015-01-08 22:54:30
阅读次数:
264
题目描述写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。输入两个数输出最大公约数 最小公倍数样例输入6 15样例输出3 30提示来源int main(){int a,m,n,cun,bei;scanf("%d %d",&m,&n);a=m*n...
分类:
编程语言 时间:
2015-01-08 17:54:30
阅读次数:
312
你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用5.1.5 函数的递归调用在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能。例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在PowerSum()函数中,...
分类:
编程语言 时间:
2015-01-08 17:38:59
阅读次数:
365
你好,C++(25)函数调用和它背后的故事5.1.2 函数调用机制5.1.2 函数调用机制在前面的学习中,我们多次提到了“调用函数”的概念。所谓调用函数,就是将程序的执行控制权从调用者(某个函数)交给被调用的函数,同时通过参数向被调用的函数传递数据,然后程序进入被调用函数内部,执行函数定义中的代码获...
分类:
编程语言 时间:
2015-01-08 17:10:15
阅读次数:
300
一. Reactor模式简介Reactor释义“反应堆”,是一种事件驱动机制。和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并注册到Reactor上,如果相应的时间发生,Reactor将主动调用应用程...
分类:
其他好文 时间:
2015-01-08 14:47:40
阅读次数:
164
首先看下以下几个结构体,定义在AF.h文件中
typedef struct
{
uint8 EndPoint; //端点/端口/终端号 1-240
uint16 AppProfId; //支持的Profile ID,配置文件ID
uint16 AppDeviceId; ...
分类:
其他好文 时间:
2015-01-08 13:29:38
阅读次数:
231