做暧暧视频网站安全吗,游戏娱乐网站建设,企业代码查询入口,eclipse可以做网站吗在前面文章提到#xff0c;当GCC 前端完成对C源代码解析完成后#xff0c;就会使用 处理过程#xff08;Passes#xff09;机制#xff0c;通过一系列的处理过程#xff0c;将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示#xff1a; 此… 在前面文章提到当GCC 前端完成对C源代码解析完成后就会使用 处理过程Passes机制通过一系列的处理过程将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示 此处所示的处理过程管理者pass_manager的构造函数。其调用的时机如下
#0 gcc::pass_manager::pass_manager (this0x7161cd0, ctxt0x7161cb0) at gcc-project/gcc/passes.cc:1579
#1 0x0000000001bd7ecd in general_init (argv00x7fffffffd9c7 cc1, init_signalstrue, original_argv...) at gcc-project/gcc/toplev.cc:1154
#2 0x0000000001bd9ed9 in toplev::main (this0x7fffffffd3d2, argc19, argv0x7fffffffd518) at gcc-project/gcc/toplev.cc:2284
#3 0x0000000004482c61 in main (argc19, argv0x7fffffffd518) at gcc-project/gcc/main.cc:39 即在编译器cc1初始化的过程中将处理过程及其管理者给初始化了。 处理过程的定义文件 是 gcc-project/gcc/passes.def经过处理后生成 pass-instances.def 文件然后在 pass_manager 构造函数中 include 进去。如下 这样就把所有在pass-instances.def定义的处理过程包含在 pass_manager 里面。 1. pass_manager 包含了 所有处理过程的指针。 2. pass_manager 通过 pass_lists 包含了 5个 pass_list每个 pass_list 包含对应类型的处理过程。 3. pass_manger 的每一个 pass_list 包含其对应类型的 处理过程pass。如下 被处理后在 pass-instances.def 文件中对应如下增加的同处理过程的序号。 all_lowering_passes pass_list 包含上图 NEXT_PASS 中的处理过程Pass。 另外 处理过程中有个 sub 栏位作为 其子处理过程列表。 总结来说经过初始化后所有处理过程的实体会以单向列表的形式分类地有层级地存放在 pass_manager 里面。