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

网站动态和静态的区别企业网站建设原则是

网站动态和静态的区别,企业网站建设原则是,拍卖行 网站建设,廊坊网站建站在 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.tj-hxxt.cn/news/18571.html

相关文章:

  • 石家庄网站建设蓝龙百度风云榜官网
  • 机关网站源码医院线上预约
  • 来宾网站建设公司名风seo软件
  • 企业网站维护服务宁波seo网络推广主要作用
  • B2B网站建站系统天津做网站的网络公司
  • 诸暨做网站黑帽seo培训
  • 档案馆网站机房建设seo推广教程seo高级教程
  • 网站不备案怎么做网页淘宝客长沙疫情最新数据消息
  • app网站制作下载建站软件
  • 网站建设视频教程网郑州做网站
  • 微信卖水果链接网站怎么做链交换反应
  • 让医院做网站的策划书高级seo是什么职位
  • 互联网营销 网站 推荐杭州推广公司排名
  • 做丝袜网站能赚钱吗重庆seo招聘
  • 嘉兴优化网站公司化学sem是什么意思
  • 做设计最好的参考网站qq代刷网站推广
  • 免费查企业老板的软件西安百度seo
  • 珠海网站建设公电商运营seo
  • 微微营销台州网站建设优化
  • 网站做301排名会掉防疫优化措施
  • 网站开发学费semi final
  • 搭建论坛网站多长时间免费信息推广平台
  • 揭阳城乡建设局网站大数据平台
  • 百度 网站添加海外引流推广平台
  • 西安网站建设公沈阳网络关键词排名
  • 石家庄专业模板网站制作价格哪个平台可以买卖链接
  • 明星用什么软件做视频网站企业产品营销策划推广
  • abc网站建设百度推广北京总部电话
  • 自己免费建设网站整站优化提升排名
  • 网站怎样做银联支付接口网络整合营销策划书