demystifying-gcc——名词详解

1.Graybox:灰盒测试

2.源程序与目标程序

源程序:从键盘上输入的代码(一般是文本格式)。

目标程序:机器翻译为机器可以识别、但是我们人不能识别的代码。

3.Spim 即时消息或状态订阅请求。

Spim Assembly Equivalent :等效的装配即时消息。

4.Translation=  Analysis+Synthesis

Interpretation  =  Analysis+Execution

5.AST 自动生成树 (Automatic Spanning Tree): 为生成探测帧从网络中的一个节点移动到另一个节点的一种功能,在SRB网络中支持生成树的自动解析。

   AST基于IEEE802.1标准。参见IEEE802.1和SRB。

6.Newlib是一个面向嵌入式系统的C运行库,目前的最新的版本是1.17.0。newlib具有独特的体系结构,能够非常好地满足深度嵌入式系统的要求。

   newlib可移植性强,具有可重入特性、功能完备等特点,已广泛应用于各种嵌入式系统中。

7.Atmel AVR系列是一种基于改进的哈佛结构、精简指令集(Reduced Instruction Set Computing, RISC)的微控制器,由Atmel公司于1996年研发。AVR系列是首次采用闪存(Flash Memory)作为数据存储介质的单芯片微控制器之一。目前为上,AVR处理器发展了六个系列,分别是:tinyAVR,ATtiny系列;megaAVR,ATmega系列;XMEGA,ATxmega系列;Application-specific AVR ,面向特殊应用的AVR系列,增加LCD控制器、USB控制器、PWM等特性;FPSLIC,FPGA上的AVR核;AVR32,32位AVR系列,包含SIMD和DSP以及音视频处理特性,与ARM形成竞争。

8.Blackfin处理器: 16/32位嵌入式处理器提供软件灵活性和扩展能力,适合融合应用:多格式音频、视频、语音和图像处理、多模式基带和分组处理、控制处理以及实时安全。

9.HC12远程工作站是一种高性能远程机架式工作站,它提供了卓越的图形/图像处理能力,内置图像压缩卡,向桌面的CP20/TC10终端设备压缩、加密和传输没有延迟和失真的屏幕画面,是适用于CAD/CAM设计,3D动画编辑、视频监控、医学影像等多种应用的理想之选。同时,由于文档、图纸等高敏感度或高机密等级的数据集中存储于数据中心而不是客户端桌面系统设备中,为用户保护自己的商业机密和知识产权提供了强有力的技术手段。

10.H8/300H MCU是具有嵌入式512KB闪存的单片机,可以高效处理大容量数据。与H8/300所有产品向上兼容,具有更高的效率,是理想的命令系统。H8/300H族微控制器是搭载了瑞萨原创H8/300H CPU内核的16位MCU。

11.

中间表示IR:intermediate representations 

12.BlackBoxprobing:Examiningonlytheinputandoutputrelationshipofasystem

     WhiteBoxprobing:Examininginternalsofasystemforagivensetofinputs

     GrayBoxprobing:Examininginputandoutputofvariouscomponents/modules

        OverviewoftranslationsequenceinGCC

       Overviewofintermediaterepresentations

       Intermediaterepresentationsofprogramsacrossimportantphases

13.GIMPLE和RTL

      gimple和RTL是gcc用来表示指令的两种形式。因此每个基本块都包含有两组指令序列,一组是gimple指令,一组是RTL指令。每个函数将首先被gimple化,此时基本块里只包含gimple指令,之后由gimple生成RTL。

     gimple是一种包含最多三个操作数的中间指令,也就是编译原理里讲的四元码(三个操作数,一个操作符),基本上也就是 dst = src1 @ src2 的这种形式。由于gimple最多只能对两个操作数进行计算,因此一个复杂的表达式会展开为一系列的gimple指令,这一过程就是gimple化。gimple化的代码实现在gcc/gimplify.c中,核心的思想就是对语法树进行后序遍历,对每个非叶子节点生成一条gimple指令,自动生成必要的中间变量,并正确识别出基本块,从而生成完整的控制流。

  从源码来看,语法分析中,每分析完一个函数,就会调用finish_function,它又会调用cgraph_finalize_function将函数添加到cgraph里,只有这个函数被调用才会继续处理它。分析整个文件后,compile_file()函数会调用一个hook:

[cpp] view plaincopy

/* This must also call cgraph_finalize_compilation_unit.  */  

lang_hooks.decls.final_write_globals ();  

这个hook实际上是write_global_declarations() (in gcc/langhooks.c),它会调用注释中提到的 cgraph_finalize_compilation_unit() 函数,接下来就是这样的调用关系:

write_global_declarations()

    cgraph_finalize_compilation_unit()

        cgraph_analyze_function()

            gimplify_function_tree() -> gimplification。

            cgraph_lower_function() -> lowering

        cgraph_optimize() -> 优化

  在所有针对gimple的优化完成后,有一个叫做pass_expand的步骤,它将gimple展开为RTL。

        RTL是一种简单的语言,很容易就能翻译成汇编代码。

        RTL是一种相对底层的指令,如果说gimple的重点在于控制流和数据流这种逻辑结构的话,那么RTL的重点就在数据和控制的精确描述。通过RTL可以将操作数的长度、对齐、操作的类型、副作用等信息表述出来,从而有利于自动化地进行最后的指令生成。

14.fdump-final-insns[=file]

Dump the final internal representation (RTL) to file. If the optional argument is omitted (or if file is .), the name of the dump file is determined by appending .gkd to the compilation output file name.

15.SSA:Single Static Assignment 

16.sloccount:代码统计工具

17.ASM:assembler template 汇编程序模板

18.CFG:控制流程图(Control Flow Graph,CFG)

19.insn:RTL的指令在gcc中称之为insn,insn是有语法和语义的,它被gcc的生成工具所识别和处理,并生成对应的.c文件作为gcc的一部分一同编译到gcc的执行文件中。

20.簇/群集:在数据存储器中,可分配的用来保存文件的最小磁盘空间。Windows 使用的所有文件系统都基于簇组织硬盘,簇由一个或多个连续的扇区组成。簇的大小越小,磁盘存储信息就越有效。如果在格式化时没有指定簇大小,Windows 2000 将根据卷的大小选择默认的簇大小。选择这些默认值可以减少空间丢失和卷上碎片的数量。簇也被称为分配单位。

  在计算机网络中,指一组协同工作以提供公用服务集并为客户端提供单个系统映像的独立计算机。群集的使用增强了服务的可用性和提供服务的操作系统的可放缩性和可管理性。

20.PAAG(Parallel Array Architecture GPU):是一种高性能多态阵列机体系结构GPU,它支持SIMDMIMD两种处理模式,能够将数据级并行运算、线程级并行运算和指令级并行运算在同构阵列机上有机地、无缝地衔接起来。其中数据级并行和线程级并行计算分别通过SIMDMIMD模式来实现,而指令调度技术是用来开发级指令级并行的重要方式。

21.ABI(应用二进制接口):应用二进制接口有两个含义,其一通常指应用程序和操作系统接口之间的调用约定,另外一个含义是指平台上的目标平台汇编和编译器之间的调用约定。

22.Putty是一个免费的、Windows 32平台下的telnet、rlogin和ssh客户端

23.telnet类工具。用它来远程管理Linux十分好用

24.rlogin:远程登录命令

25.Secure Shell(缩写:SSH),即“安全壳协议”,一项计算机上的安全协议

26.svn(subversion):是一个开放源代码的版本控制系统
















 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值