可移植性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可移植性相关的知识,希望对你有一定的参考价值。

  1. 软件可移植性指与软件从某一环境转移到另一环境下的难易程度。为获得较高的可移植性,在设计过程中常采用通用的程序设计语言和运行支撑环境。尽量不用与系统的底层相关性强的语言。
  2. 可移植性是软件质量之一,良好的可移植性可以提高软件的生命周期。代码的可移植性主题是软件;可移植性是软件产品的一种能力属性,其行为表现为一种程度,而表现出来的程度与环境1密切相关。(注1:环境包括软件环境,硬件环境和系统的组织环境)。
  3. 可移植性并不是指直接复制程序就可以用了,
    指的是不用改变代码便可以在另一台机器上编译运行。

 

如何理解编程语言的可移植性?

  1.  编程语言的可移植性意味着,用一种编程语言在一个系统上编写的程序经过很少改动或者不经修改就可以在其他系统平台上运行。要想了解可移植性必须要知道:1.什么是程序?2.什么是系统平台?
  2. 什么是程序

       首先,我们得知道程序的本质是什么?程序的本质就是一连串能被CPU识别并执行的有0、1代码组成的指令即目标代码(0、1组成的代码)。不同类型的CPU指令集是不同的,相同的一段0、1代码intelCPU能识别,ARM CPU就不能识别产生错误。

       其次,我们得知道程序的运行原理是什么?大家都知道程序是运行在操作系统之上的,而大家不知道的是:程序要想在操作系统上运行就需要在程序的头部嵌入一段启动代码,此代码相当于程序和操作系统之间的接口。到这里我们可以清楚的知道:程序=目标代码+启动代码,两者缺一不可,只有这样程序才能在系统上运行起来。

        不同的操作系统,它们的启动代码接口是不同的,例如在Intel CPU上运行的xp和linux的启动代码接口是不同的,所以同一种程序它们的启动代码是不同的。但是因为都是INtel CPU,所以程序的目标代码(0、1代码)是相同的。

  3. 什么是系统平台

        这里的系统平台是指cpu+操作系统的组合:如intel CPU+windows xp、intel CPU+Mac Os X、intelCPU+linux这是三个不同的系统平台,ARM cpu+linux与intel Cpu+linux也是不同的系统平台。

        为什么系统平台是CPU+操作系统的组合呢,我们从上面了解到程序=目标代码+启动代码。目标代码随着CPU类型的不同而不同,启动代码随着操作系统的不同而不同,因此系统平台是CPU+操作系统

  4. 可移植性的本质

     那么目标代码和启动代码是怎么生成的呢?答案是编译器。编程语言编写的程序首先要被编译器编译成目标代码(0、1代码),然后在目标代码的前面插入启动代码,最终生成了一个完整的程序。所以编程语言的可移植性依赖于它们的编译器是否强大,是否在多个平台上都有这种编程语言的编译器。例如C编译器在大约40种系统上可用,包括从8位微处理器的计算机到Cray超级计算机。

    要注意的是,程序中为访问特定设备(如显示器)或者操作系统(如windows xp  的API)的特殊功能而专门编写的部分通常是不能移植的。

    综上所述,一个编程语言的可移植性强不强取决于1.不同平台编译器的数量  2.对特殊硬件或操作系统的依赖性

 

什么叫可移植性?什么叫开源?可移植性和跨平台性有什么区别?

  • 软件可移植性指与软件从某一环境转移到另一环境下的难易程度。为获得较高的可移植性,在设计过程中常采用通用的程序设计语言和运行支撑环境。尽量不用与系统的底层相关性强的语言。
  • 开源(Open Source,开放源码)被非赢利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。
  • 可移植性比跨平台性更强,可移植性的环境包括软件环境,硬件环境和系统的组织环境,而跨平台性更多的是指不同的操作系统。

 

以上是关于可移植性的主要内容,如果未能解决你的问题,请参考以下文章

MODBUS RTU通讯协议简介

Modbus通讯协议简介

modbus协议之串行链路

Modbus 简介

FreeModbus RTU 移植指南

MODBUS RTU协议原理及功能码解析