通常由七个部分组成。分别是:词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成以及表格和表格管理、出错处理。
各自功能是:
1词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词(也称单词符号,或简称符号)。在词法分析阶段工作所依循的是语言的词法规则;描述词法规则的有效工具是正规式和有限自动机。
2语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串组成各类语法单位。具体的说,语法分析是在单词流的基础上建立一个层次结构——建立语法树。
3语义分析和中间代码生成:语义分析利用语法分析阶段确定的层次结构来识别表达式和语句中的 *** 作信息及类型信息;中间代码生成阶段将产生的源程序的一个显式中间表示,这种中间表示可以看成是某种抽象程序,通常是与平台无关的,(可用三地址码和四元式表示)。
4优化:试图改进中间代码,以产生执行速度较快的机器代码。
5目标代码生成:生成可重定位的机器代码或汇编代码。
6表格和表格管理:编译程序在工作过程中需要保持一系列的表格,以登记源程序的各类信息和编译各阶段的进展情况。
7出错处理:编译程序对源程序中的错误进行处理,应最大限度地发现源程序中的各种错误,准确地指出错误的性质和发生错误的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,以便进一步发现其他可能的错误。通常编译过程中每个阶段都可能检测出错误,其中,绝大多数数错误可以在编译的前三阶段检测出来。且源程序中的错误通常分为语法错误和语义错误两大类。出错处理就是为了处理以上的错误情况。
1)AndroidManifestxml
该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,如要把apk上传到Google
Market上,也要对这个xml做一些配置。在apk中的AndroidManifestxml是经过压缩的,可以通过AXMLPrinter2工具解开,具体命令为:java
-jar AXMLPrinter2jar AndroidManifestxml
目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的
\SDK\16\android-sdk-windows-16_r1\platforms\android-16\samples\ApiDemos
例子中,有个comexampleandroidapiscontent
的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAssetjava
中。同理,asset也可以放置其他文件。
(6)classesdex文件
classesdex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb
push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump
xxxdex。另,有人介绍到Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。classesdex文件是Java源码编译后的代码文件。通常该文件里都有单词、语句需要汉化。
每个Verilog程序包括四个主要部分:端口定义、I/O说明、内部信号声明、功能定义。Verilog HDL是一种用于数字逻辑电路设计的语言。用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。
Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种:
1、系统级(system):用高级语言结构实现设计模块的外部性能的模型。
2、算法级(algorithm):用高级语言结构实现设计算法的模型。
3、RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。
4、门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。
5、开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。
扩展资料
一个复杂电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。
利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。Verilog HDL行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和RTL级的模型设计。
Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。这是因为C语言在Verilog设计之初,已经在许多领域得到广泛应用,C语言的许多语言要素已经被许多人习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。
不过,Verilog与C语言还是存在许多差别。另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。总的来说,具备C语言的设计人员将能够很快掌握Verilog硬件描述语言。
参考资料来源:
百度百科——Verilog HDL
在C语言中,函数是程序的基本组成单位。
一个函数由函数的说明部分组成。包括函数名、函数类型、函数属性、函数参数名、形式参数类型。
结构化程序设计的思想就是把一个问题分解成多个小的问题,每一个小问题都解决了,大问题也就解决了。C语言的函数就是实现结构化程序设计而建立的一个基本单位,如同生物学上的细胞。
C程序的基本组成单位是 函数
一个完整的数控加工程序由:开始符、程序名、程序结束指令、结束符等组成。
常用指令:G功能(准备功能)、M功能(辅助功能)、F功能(进给功能)、S功能(主轴旋转功能)、T功能(刀补功能)指令等 。
指令通常由地址符和数字符组成。
模态指令:在程序段中一经指定持续有效,直到被同组其它指令替代为止的代码,非模态指令只在本程序中有效。
BIOS分为四模块ESCD(Extended
System
Control
Data)是扩展系统控制数据模块。DMI(Desktop
Management
Interface)桌面管理接口模块。BootExtension被称为启动扩展模块,通常用于存放BIOS更新程序等等。MainBlock当然就是主模块了
以上就是关于一个典型的编译程序通常由哪些部分组成各部分的主要功能是什么全部的内容,包括:一个典型的编译程序通常由哪些部分组成各部分的主要功能是什么、安卓应用的程序部分仅仅包含在APK根目录的classes.dex文件里面吗、每个Verilog HDL程序包括哪4个主要部分等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)