当前位置: 首页 > wzjs >正文

苏州区网站建设网络推广外包业务销售

苏州区网站建设,网络推广外包业务销售,网站制作 南通,cfa一级二级三级难度区别在 GCC 编译一个 C 源代码时,先会通过宏处理,形成 一个叫转译单元(translation_unit),接着进行语法分析,C 的语法分析入口是 static void c_parser_translation_unit(c_parser *parser); 接着就通过类似递…

        在 GCC 编译一个 C 源代码时,先会通过宏处理,形成 一个叫转译单元(translation_unit),接着进行语法分析,C 的语法分析入口是

static void c_parser_translation_unit(c_parser *parser);

        接着就通过类似递归下降解析器(Recursive descent parser)的方式进行语法解析。当完成一个函数的解析后,会将该函数加入到符号表(Symbol Table)中的调用图(Call Graph)的节点集(nodes)中。通过下面 gdb 的 backtrace 可以看到:

#0  cgraph_node::get_create (decl=0x7ffff79b2700) at <gcc-project>/gcc/cgraph.cc:537
#1  0x00000000012d06d4 in c_genericize (fndecl=0x7ffff79b2700) at <gcc-project>/gcc/c-family/c-gimplify.cc:796
#2  0x00000000011587ec in finish_function (end_loc=33408) at <gcc-project>/gcc/c/c-decl.cc:11501
#3  0x00000000011d9734 in c_parser_declaration_or_fndef at <gcc-project>/gcc/c/c-parser.cc:3010
#4  0x00000000011d680e in c_parser_external_declaration (parser=0x7ffff7fbc5b0) at <gcc-project>/gcc/c/c-parser.cc:2088
#5  0x00000000011d6254 in c_parser_translation_unit (parser=0x7ffff7fbc5b0) at <gcc-project>/gcc/c/c-parser.cc:1952
#6  0x000000000123cf9e in c_parse_file () at <gcc-project>/gcc/c/c-parser.cc:29613
#7  0x00000000012f68c8 in c_common_parse_file () at <gcc-project>/gcc/c-family/c-opts.cc:1379
#8  0x0000000001bd64d3 in compile_file () at <gcc-project>/gcc/toplev.cc:452
#9  0x0000000001bd9b1e in do_compile () at <gcc-project>/gcc/toplev.cc:2200
#10 0x0000000001bd9fb9 in toplev::main (this=0x7fffffffd3d2, argc=19, argv=0x7fffffffd518) at <gcc-project>/gcc/toplev.cc:2354
#11 0x0000000004482a35 in main (argc=19, argv=0x7fffffffd518) at <gcc-project>/gcc/main.cc:39

        cgraph_node::get_create 就是对于一个解析后的函数所构建的调用图中的节点,调用节点(cgraph_node)。

        由此可见,符号表(Symbol Table)会包含整个转译单元中的符号,对于函数的话,会形成对应的调用节点(cgraph_node:symtab_node)。

        此时,加入以调用节点加入到符号表中的函数是已经解析好,以GENERIC 中间语言所表示的。

        加入后,cc1 调用 cgraph_node::finalize_function 进一步处理。如下图所描述的。

        这里,关键是说明 C 源代码在解析(Parse)后,所存在的形式,如何提供到后面基于过程(Pass)机制的处理。

        那么此时,在compile_file函数中,如下图:

        经过 lang_hooks.parse_file (); 后,gcc 已经将C的源代码解析完毕(Parsed)并以调用图的方式存放符号表(Symbol Table)中。

        在接着的 symtab->finalize_compilation_unit (); 就开始通过以处理过程(Passes)的方式,将GENERIC中间语言转换成最终的汇编语言。 

 

http://www.dtcms.com/wzjs/278859.html

相关文章:

  • 万网域名怎样把淘宝网站加进去seo是什么专业的课程
  • 企业为什么做网站网站制作工具有哪些
  • it行业网站建设网络口碑营销名词解释
  • 做网站的人叫什么关系网站优化公司
  • mac更新了wordpress网站关键词优化排名
  • 河南做网站哪家好国际新闻今天
  • 微信上的微网站在哪里做竞价推广大概多少钱
  • 网站建设 长春个人建站
  • 自适应网站模板源码百度提交网站收录查询
  • 美食网站素材总推荐榜总点击榜总排行榜
  • 网站建设网站开发外贸seo优化
  • 义乌本地网站开发广州网站排名专业乐云seo
  • 进口食品销售销售在那个网站做百度通用网址
  • 做58同城那样的网站今天的新闻
  • dw 做简单静态网站怎样注册个人网站
  • 利用大平台做网站营销存在的问题及改进
  • 淘宝联盟怎么建网站网站注册信息查询
  • 专门做塑胶原料副牌网站谷歌推广培训
  • 唐山网站主页制作推广软文发布平台
  • 网站建设的开发方式和费用培训心得体会范文大全1000
  • 免费的奖励网站有哪些深圳企业黄页网
  • 邹城做网站鼓楼网页seo搜索引擎优化
  • 企业网站建设规划百度搜索关键词设置
  • 大连flash网站进入百度网首页
  • 网站建设经典案例html网页制作
  • 免费做网站站标seo查询百科
  • 找人做网站应该注意什么优化公司结构
  • 怎样把网站做的好看打造龙头建设示范
  • net网站开发 介绍苹果看国外新闻的app
  • 裸体做哎按摩网站沈阳网站制作公司