想初步了解gcc和具体怎么使用gcc,最好就是man gcc。
具体大概想知道gcc是怎么处理c语法的,可查看gcc本身生成的一些gcc文档。
具体详细想知道gcc是怎么处理c语法的,可查看gcc本身生成的gccint和gcc源码。其实这也是学好C语言的一种方式,毕竟目前大部分的C程序都是由GCC编译的,某种语言的成功主要不是因为他的设计是多么的合理,多么的优秀,这只是一方面,另一方面是这种语言已经实现了一个良好的平台,而这个平台的使用者的数量和使用范围比较可观,简单的说linux是用C写的,dejagnu是TCL和EXPECT写的,emcas是Lisp写的等等。
将c翻译成asm,除了编译器本身的体系结构的合理性外,还取决于体系结构和asm指令集的设计的合理性,我觉得后者更重要。所以好的体系结构和优秀的asm指令集的设计对于编译器中具体的后端模板的编写具体很大程度上的指导作用。
目前接触到的gcc中的内容有寄存器分配,并行符号的添加,nest_function和nonlocal_label。后续会继续小谈下我理解中的编译原理中对于这些的处理和gcc本身基于编译原理对于这些语法的处理。