简介
编辑在软件工程中,移植是为了在计算环境中实现某种形式的执行而调整软件的过程,该计算环境不同于给定程序(用于此类执行)最初设计的环境(例如,不同的 CPU, 操作系统或第三方库)。
当更改软件、硬件以使其在不同环境中可用时,也会使用该术语。
当将软件移植到新平台的成本xxx低于从头开始编写的成本时,软件就是可移植的。移植软件的成本相对于其实施成本越低,据说它越可移植。
词源
编辑当代码与特定操作系统或体系结构不兼容时,必须将代码移植到新系统中。
该术语通常不适用于调整软件以在同一 CPU 和操作系统上以较少内存运行的过程。
软件开发人员经常声称他们编写的软件是可移植的,这意味着只需很少的努力就可以使其适应新环境。
实际需要的工作量取决于几个因素,包括原始环境(源平台)与新环境(目标平台)的差异程度、原作者了解哪种编程语言构造的经验以及第三方 库调用不太可能是可移植的,并且原作者在仅使用可移植结构方面投入的精力(特定于平台的结构通常提供更便宜的解决方案)。
历史
编辑今天桌面上使用的明显不同的 CPU 和操作系统的数量比过去少得多。 x86 架构的主导地位意味着大多数桌面软件永远不会移植到不同的 CPU 上。 在同一个市场中,操作系统的选择实际上已经减少到三种:Microsoft Windows、macOS 和 Linux。 然而,在嵌入式系统和移动市场中,便携性仍然是一个重要问题,而 ARM 是一个广泛使用的替代方案。
国际标准(例如 ISO 颁布的标准)通过指定计算环境的详细信息以帮助减少不同符合标准的平台之间的差异的方式极大地促进了移植。 编写保持在这些标准规定的范围内的软件代表了一项实际但不平凡的努力。
在两个符合标准的平台之间移植(软件)这样的程序,只需加载源代码并在新平台上重新编译即可。 然而,从业者经常发现由于细微的平台差异,需要进行各种小的修正。 大多数标准都存在灰色区域,在这些区域中,对标准的解释差异会导致平台与平台之间的微小差异。
一些高级编程语言(例如 Eiffel、Esterel)的编译器通过以另一种高级中间语言(例如 C)输出源代码来获得可移植性,许多平台的编译器通常可用。
与移植相关但不同的两项活动是模拟和交叉编译。
移植(软件)编译器
编辑现代编译器不是直接翻译成机器代码,而是翻译成独立于机器的中间代码,以增强编译器的可移植性并xxx限度地减少设计工作。 中间语言定义了一个虚拟机,可以执行所有用中间语言编写的程序(机器由其语言定义,反之亦然)。代码生成器将中间代码指令翻译成等效的机器代码序列以创建可执行代码。 也可以通过实际为虚拟机实现解释器或 JIT 来跳过机器代码的生成。
中间代码的使用增强了编译器的可移植性,因为只需要将编译器本身的机器相关代码(解释器或代码生成器)移植到目标机器上。编译器的其余部分可以作为中间代码导入,然后由移植的代码生成器或解释器进一步处理,从而生成编译器软件或直接在解释器上执行中间代码。机器无关部分可以在另一台机器上开发和测试 (主机)。 这xxx减少了设计工作,因为机器独立部分只需开发一次即可创建可移植的中间代码。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196136/