要学习和修改GCC源码,首先第一步是在自己的机器上用GCC源代码编译出一个选定版本的GCC(这里以gcc-4.5.2.tar.bz2为例,源码可以从http://gcc.gnu.org去下载)。除此之外,GCC依赖于gmp、mpfr、mpc三个库,如果你机器上没有,或者版本太老以至于无法支持新的GCC,那么你还得去把这三个库下载下来。 一般来说,下载...
准确来说,GCC是⼀个编译驱动器,驱动cc1、as和ld三个部件完成编译、汇编和连接的⼯作。cc1将C语⾔源⽂件编译为汇编⽂件(.s)。⽽将汇编代码转换为⼆进制指令的⼯作由AS完成,⽣成⼤家都很熟悉的对象⽂件(.o);⽣成的这些对象⽂件再由AR程序打包成静态库(.a),或者由LD程序连接...
#010 nTest3 = nTest1 + nTest2; 把上面的源程序分析后,就生成下面的DAG树,如下: #2 ADDRLP4 count=1 nTest1 #3 CNSTI4 count=1 1 '1 ASGNI4 count=0 #2 #3 4 4 左子树是ADDRLP4,右子树是CNSTI4,根节点是ASGNI4。这是第5行的树。 #2 ADDRLP4 count=1 nTest2 #3 CNSTI4 count=1 2...
通过调用表达式处理函数expr1来计算常量的值,然后调用后端接口genconst来生成保存常量的代码,并且设置变量g_nTest的初始化为常量表达式的值。这样就把全局变量初始化的代码分析完成。