首页 理论教育 编译、汇编、链接的操作流程详解

编译、汇编、链接的操作流程详解

时间:2023-06-20 理论教育 版权反馈
【摘要】:编译与链接在这里就是指编译、汇编和链接3个步骤按顺序联合运行。在CCS主界面的菜单栏中选择Project→Rebuild All命令或单击工程工具栏上的按钮,CCS将重新对工程中所有文件进行编译与链接,重新生成.out可执行文件,该文件默认存放在工程目录下的Debug目录内,同时在CCS主界面下方的输出窗口中将显示进行编译与链接的相关信息。

编译、汇编、链接的操作流程详解

如果工程文件已经创建,工程所需的源文件也已经编辑好,并且已经添加到工程文件中,这时就要对该工程的所有文件进行编译与链接,生成可执行的目标程序(*.out)。编译与链接在这里就是指编译、汇编和链接3个步骤按顺序联合运行。在DOS命令行下,这些步骤需要手工分步执行。在CCS下,执行一个编译命令“Compile”(选择Project→Compile File命令或单击工程工具栏上的978-7-111-35536-6-Chapter06-97.jpg按钮)就可以完成编译和汇编两个独立步骤,每个文件被编译汇编成COFF格式的扩展名为.obj的文件,但不进行链接,不生成.out文件。在CCS下,执行一个编译链接命令“Build”(选择Project→Build命令或单击工程工具栏上的978-7-111-35536-6-Chapter06-98.jpg按钮)就可以自动完成编译、汇编和链接3个独立步骤,生成.out可执行文件。注意此命令编译时只编译上次编译链接后修改过的源文件,先前编译过,且没有修改的源文件不再编译。

在CCS主界面的菜单栏中选择Project→Rebuild All命令或单击工程工具栏上的978-7-111-35536-6-Chapter06-99.jpg按钮,CCS将重新对工程中所有文件进行编译与链接,重新生成.out可执行文件,该文件默认存放在工程目录下的Debug目录内,同时在CCS主界面下方的输出窗口中将显示进行编译与链接的相关信息。

在执行编译链接过程中必须设置编译链接选项,CCS已经对编译链接选项做了默认配置,用户可以利用这些默认选项完成工程的编译链接,但很多情况下需要用户根据需要进行修改定制。用户可以通过在菜单栏中选择Project→Build Options命令,或在工程视图窗口的工程文件名volume.pjt上单击鼠标右键,打开关联菜单,选择Build Options命令,调出编译链接选项窗口进行相应设置,其中编译链接选项窗口如图6-32所示。图中最上部文本框中显示编译、链接的信息,支持手动输入编译链接选项字符串,使用时推荐利用图中下部的选项区中给出的各提示选项生成该字符串。

978-7-111-35536-6-Chapter06-100.jpg

图6-32 Build Options窗口

a)编译选项窗口 b)链接选项窗口

1)在编辑选项窗口中,如图6-32a所示,主要定义了8类选项:Basic、Advanced、Feedback、Files、Assembly、Parser、Preprocessor、Diagnostics,各类选项页主要功能如下:

①Basic选项页,可以设置基本的编译选项,主要选项如下:

Processor Version:指定处理器类型,可以输入541、542、543、545、545、5451p、5461p、548、549等。一般不用填写,需要的话可在文本框输入548等,将在上部显示的编译选项字符串中加入-v548字符串。

Opt Level:定义优化方式,Debug版本为默认None项,Release版本为默认Function项,具体选项功能如下。

●None:不进行优化。

●Register(-o0):将变量分配到寄存器实现优化。

●Local(-o1):除使用-o0优化外,执行去除未使用的赋值等优化。

●Function(-o2):除使用-o1优化外,执行循环优化、去除全局未使用的赋值等优化。

●File(-o3):除使用-o2优化外,执行去除未调用函数等优化。

Program Level Opt:定义程序级的优化方式,Debug版本和Release版本都默认是None项,各选项功能如下。

●None:不执行程序级优化。

●No External Refs:没有从外部可调用的函数和变量。

●No External Func Refs:有从外部可以修改的变量,没有从外部可调用的函数。

●No External Var Refs:没有从外部可以修改的变量,有从外部可调用的函数。

●ExternalFunc/Var Refs:有外部可调用的函数和变量。

②Advanced选项页,可以设置一些高级的编译选项,主要选项如下:

RTS Modifications具有3种模式。

●Defns no RTS Funcs:用户源文件中不能声明或改变运行时支持库中的函数。

●Contains RTS Funcs:通知优化器用户文件声明了一个与标准库函数同名的函数。

●Alters RTS Funcs:通知优化器用户文件改变一个标准库函数。

Auto Inline Threshold(-oi):文本框中填写一个数字,该数字指定一个门限,编译器将长度小于该门限的函数认作内联函数。编译时,编译器将调用内联函数的语句用该内联函数的函数体直接代替,执行可以减少调用时间,本质上是用存储空间来换取执行时间的方法。

Optimize for Space(-ms):选中则优化代码空间。(www.xing528.com)

Use FarCalls(-mf)(C548 and higher):使用远调用,当使用rts_ext.lib时必须选中。

Use Near Calls(no-mf):默认选项,使用rts.lib时选中,不支持远调用。

③Assembly选项页,设置汇编选项,主要选项如下:

Keep Generated.asm Files(-k):选中后,可以保留编辑器产生的汇编文件,否则在汇编完成后自动删除汇编文件。

Generate Assembly Listing Files(-al):选中后,编译器产生一个汇编列表文件,扩展名为.lst。

Keep Labels as Symbols(-as):选中后,编译器将标号放入符号表中。

Make Case Insensitive in AsmSource(-ac):选中后,汇编时对汇编源文件中大小写不敏感。

Algebraic assembly(-amg):选中后,汇编源文件中用代数语言指令。

Pre-Define NAME(-ad):在文本框中设置符号名,相当于在汇编文件开始插入name.set[value],若value默认,则置为1。

Undefine NAME(-au):取消预定义的常量名。

.copy File(-ahc):汇编器将指定的文件复制到汇编模块。

.include File(-ahi):汇编器将指定的文件包含到汇编模块。

④Preprocessor选项页,设置预处理的相关选项,主要选项如下:

Include Search Path(-i):指定包含文件的路径,设置多个路径时要用分号分隔。当包含文件没有在当前路径找到时,编译器开始从这些路径以从左到右的顺序搜索该文件。如果还没有寻找到该文件,编译器到C_DIR环境变量定义的路径继续进行搜索。

Pre-Define Symbol(-d):为预处理器定义指定的常量,这等价于在C源文件开始处用#define宏指令定义的常量。

Undefine Symbol(-u):取消指定的预定义常量。

⑤Diagnostics选项页,用于设置诊断信息的相关选项,主要选项如下:

Output Diagnostics to.err File(-pdf):选中后,编译器将诊断信息输出到一个扩展名为.err的文件。

Display Diagnostic Identifiers(-pden):选中后,输出显示诊断的数字标识符及文本信息。

Warn on Pipeline Conflicts(-aw):选中后,可以显示流水线冲突信息。

2)在链接选项窗口中,如图6-32b所示,主要定义了3类选项:Basic、Libraries、Advanced,这些选项页下包含的主要选项如下。

Output Filename(-o):指定输出文件名称,默认使用工程文件名。

Map Filename(-m):指定map文件名称,默认使用工程文件名。

Heap Size(-heap):指定堆的大小。

Stack Size(-stack):指定栈的大小。

Fill Value(-f):指定输出文件中空余处的填充值。

Include Libraries(-l):指定链接时要使用的库文件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈