全部版块 我的主页
论坛 休闲区 十二区 休闲灌水
3758 0
2016-04-07

目标代码的生成_目标代码的管理_目标代码与软件源代码的区别


目标代码的生成


  目标代码生成是编译程序的最后一个工作阶段,其任务是把经优化处理之后的中间代码变换成特定机器上的机器语言程序或汇编语言程序,实现最终的翻译工作。由于目标语言依赖于硬件系统,因而如何充分利用现有的寄存器以节省访问内存的时间,合理地选择执行速度快的指令,生成尽可能短且有效的目标代码是这个阶段考虑的主要问题。



  如果代码生成程序以四元式形式的中间代码序列作为输入,在其生成目标代码时,可假定每个四元式中的运算符及运算对象的数据类型均已知道,所需的全部类型转换操作均已在中间代码中得到体现。此外,如果出现在程序中的全部符号名运行时所需的存储空间均已得到分配,它们所在的数据区编号及相对地址已分别填人符号表各相应登记项栏中。所以在四元式中,仅出现符号名在符号表中登记项的序号。


目标代码的管理


  目标代码生成是以中间代码作为输入,将其转换成特定机器的机器语言或汇编语言作为输出。在此以四元式序列作为它的加工对象,输出目标代码的形式有三种:具有绝对地址的机器语言程序,具有相对地址的机器码程序和汇编指令程序。


  具有绝对地址的机器语言程序在存储空间中有固定的存储位置,一旦产生此种形式的目标代码之后,便可立即执行,因此这种形式最为迅速有效,但它并不灵活,不适合大型程序。


  具有相对地址的机器语言程序由若干个目标模块组成,各个模块中都包含目标程序中的一部分代码,可将它们装人到存储空间的任何位置,然后由连接装配程序将它们连接在一起之后执行。显然,连接装配程序增加了开销,但这种形式有较大的灵活性,所以为许多编译程序所采用。



  目标代码生成程序可以产生汇编语言形式的目标代码,这种形式在实现上要比前两种形式容易。当然,这种形式的目标代码还需经汇编后才能成为可执行代码。


目标代码与软件源代码的区别


两种代码本质不同

软件是相对于硬件而言的,硬件主要是指计算机,软件是由编程员运用某种计算机语言所编写的程序(或称为源代码),由一连串指令与数据构成。指令与数据经由计算机的输入输出模块被储存在内存之中,中央处理器依次执行内存中的指令,并将执行结果返回到内存或输入输出模块,这就是计算机的基本运行模式。

依据不同的应用,编程员会选择不同的计算机语言进行编程,从早期的机器语言(或称“组合语言”)到现在流行的BASIC语言、C语言、JAVA语言、HTML语言等等。其中,有些语言(如C语言)的程序需要经过编译器的处理以产生可供计算机执行的目标代码,经过打包或连结成为固化的“可执行代码”后,载入内存由中央处理器直接执行;有些语言则不需编译的过程而由一个中间软件代为执行,如BASIC语言的源代码由解析器代为执行,HTML语言的源代码由浏览器代为执行;JAVA语言的源代码经编译后产生的目标代码不由中央处理器直接执行而是由JAVA虚拟机代为执行。不可忽略的是,早期的编程员经常用机器语言直接编程,并将源代码(同时也是目标代码)“烧入”计算机内存中由中央处理器直接执行。

虽然由编程员撰写的源代码转换到可执行代码的路径不一而足,被执行的方式也各有不同,但无论是用原始的机器语言(低阶语言,具有目标代码的外观),或是非机器语言(高阶语言,如BASIC、C、JAVA、HTML等语言)撰写的源代码,都具有文字外观,能表达编程员的思想,为编程员智力活动下的产物,属于文字作品从而享受著作权法保护;而由机器产生的目标代码,其文字外观仅由“0”与“1”2个符号所组成,一般人无从由其外观感知其内容或思想,系由机器自动产生而非人类智力活动下的产物,故不符合著作权法下文字作品的定义,不应受著作权法保护。

计算机运行的目的与价值在于解决算术或逻辑问题,功能性是其主要目的与价值。软件作为计算机的大脑,负责指挥硬件的运行,其目的与价值直接决定着计算机的目的与价值。事实上,软件的源程序(或源代码)是编程员的代言人,通过源程序,编程员指挥着计算机的每一个动作以解决某个算术或逻辑问题。但不可忽略的是,源程序通过其文字外观同时也扮演着编程员之间的沟通媒介,即具有沟通性或欣赏性。源程序就有如微积方程一样,虽然大多数人无法认识微积方程,但微积方程是数学家间的沟通媒介,源程序与微积方程都属于人类智力活动的产物,具有文字外观,虽然是不为一般人所理解的文字或符号,但却不妨碍其成为著作权法下的文字作品,受著作权法保护。

目标代码(本文仅指由机器产生的目标代码,因编程员所撰写的目标代码兼具功能性与沟通性)则不然,其唯一目的在于被计算机执行,编程员之间不会以此作为沟通媒介。简言之,功能性是其唯一属性,沟通性自始至终均不存在,自不能成为著作权法下的作品而受著作权法保护。虽然编程员能通过反向工程破解目标代码而一窥其内容,但毕竟那是衍生或演绎的产物,而非“作品”的本身属性。


需要注意的是,就法律意义而言,计算机指的是基于冯纽曼结构的电子计算机,至于其他不具文字外观的“软件”用于其他种类的计算机(例如生物计算机)则不在著作权法保护之内。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群