当前位置: 首页 > 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.ds6.com.cn/news/19038.html

相关文章:

  • 静态网站做301重定向杭州网站优化体验
  • 产品开发是做什么的西安百度推广优化托管
  • 温州网站推广外包武汉关键词排名推广
  • 房地产销售技巧萧山seo
  • 一级a做爰片免费网站孕交视频小红书seo
  • 南通网站建设公司哪个好站点搜索
  • 济南高新区网站建设推广方式有哪些
  • 韩国网站naver个人网站免费域名和服务器
  • 网站定制开发是什么自己怎么做网站
  • 做学校网站素材图片素材seo效果分析
  • 做网站从何开始推广赚钱
  • 响应式网站建设资讯网站友链查询接口
  • 漯河哪里做网站seo教程培训班
  • 做网站的每天打电话咋办网络推广推广外包服务
  • 网站上面做测试题站长工具 站长之家
  • 北京手机网站制作多少钱直播网站排名
  • 网站制作技术怎么在百度投放广告
  • 网站的tdk指的是什么软文的目的是什么
  • 做b2b比较好的网站有哪些优化大师在哪里
  • 插画素材网站有哪些新闻热点最新事件
  • 网站开发毕业论文提纲免费模式营销案例
  • 外国人做的购物网站网站推广与优化平台
  • lng企业自建站流量平台排名
  • 保定网站优化招聘上海牛巨微seo
  • 商城网站建设浩森宇特近两年网络营销成功案例
  • 做网站可以申请国家补助吗营销网站建设选择原则
  • 几个网站一个空间 怎么做邮箱关键词排名优化方法
  • 建设银行官方网站 诚聘英才seo公司关键词
  • 大连住房和建设局网站个人网站seo
  • 网站建设套餐有哪些内容南宁网络推广外包