美文网首页
高级程序语言如何在不同的硬件平台上无障碍运行

高级程序语言如何在不同的硬件平台上无障碍运行

作者: Gen_ | 来源:发表于2018-12-06 09:48 被阅读4次

题记:

电脑的硬件有CPU(中央处理器)、RAM(内存)、Hard Disk(硬盘)、BIOS(基本输入输出系统)等;电脑的软件有操作系统,编译器,应用软件等。其中最关键的是CPU和操作系统的交互。CPU拥有ISA(指令集),操作系统通过将高级语言编写的程序转化为汇编语言(能被CPU翻译成机器语言的特定汇编语言)后,再进一步转化为CPU能够识别的机器语言,CPU利用自身的指令集将二进制代码翻译为相应的指令。操作系统之所以重要,是因为它是硬件与应用软件的中间人,它将通过自己的平台开发出来的应用程序解析为汇编语言和机器语言与硬件交互。

首先明确几个概念。高级语言:比如basic,fortran等,这样的语言实际上是比较接近于人类的语言的,计算机绝对无法直接识别这样的语言,需要编译器将高级语言翻译成机器能懂的执行码,然后才能执行。低级语言:汇编语言和机器语言。这样的语言是机器可以直接识别的,但是和人类的语言相去甚远。所以这样的语言执行效率非常高,但是编写代码的代价也很非常高。机器语言和汇编语言是和计算机的指令集一一对应的,机器支持怎样的指令集,低级语言就有怎样的命令集。

    再谈到移植的问题。如果使用汇编代码编写程序,那么假设A机器的指令集和B机器的指令集不相同,如果A机器的汇编语言中有一条指令在程序中出现了10000次以上,而b机器却不支持这条指令,那么如果我们想把a机器的程序移植到b机器上执行,就必须修改程序代码这10000个地方,让他们都能被b支持。这样的工作量是非常巨大的;但是,如果使用高级语言,由于高级语言对机器硬件来说是抽象的,那么实际上a机器的高级语言放到b机器上,然后用b机器适合的编译器编译,如果编译成功,那么b机器也可以运行这个程序了。当然a机器和b机器对同样一种高级语言,他们用的编译器是不一样的。如果把b机器的编译器放到a机器上去编译程序,那一定无法成功。总之,高级语言的特点就是指令和最终的可执行代码的透明性,所有的硬件差异都由编译器去解决了,作为高级程序的程序员是看不到这个差异的,因为程序员本人不用去写编译器,他们只是直接用相应正确的编译器就可以了。

    不过在不同的机器上实现不同的编译器还是代价很高的事情。为了降低代码移植的成本,人们想到了虚拟机机制,就是在高级语言和机器语言中间加上一层:“中间层”。比如java,java的源代码通过javac编译器编译了以后,生成了一种叫bytecode的字节码,这样的代码也是一种二进制代码,人是看不容易看明白的。但是这样的代码也不是机器代码,不能直接运行。java体系中的中间层java虚拟机才能看明白这样的代码,然后java虚拟机再负责将bytecode转换为机器可执行代码。如此一来,只要人们能为java语言设定一个统一标准,至于在特定的硬件平台上java虚拟机如何把bytecode翻译成机器代码,就由专门的硬件平台开发商和虚拟机开发商去负责就是了(反正这也是他们开发设计必须要做的工作)。程序员写的代码在不同的硬件平台上都可以无障碍运行,换硬件平台的时候也不用修改任何代码。

相关文章

  • 高级程序语言如何在不同的硬件平台上无障碍运行

    题记: 电脑的硬件有CPU(中央处理器)、RAM(内存)、Hard Disk(硬盘)、BIOS(基本输入输出系统)...

  • Java代码运行机制(笔记)

    1、为什么Java要在虚拟机里运行? 原因1:Java是一门高级程序语言,语法复杂,抽象度也很高。直接与硬件上运行...

  • Hello,C#

    一、C#是个啥东东? C#是微软开发的一套运行在.Net Framewrok平台上的一种高级程序语言,我们经常说的...

  • 第一章C语言笔记-- 基础概述

    1、C的历史   C语言是一种高级程序语言,可以实现对硬件直接操作,例如如内存地址的操作、对位的操作。UNIX5操...

  • 内存泄漏相关知识

    不是所有指令都执行得又快又好,下面介绍内存及它如何影响系统运行。普遍认为,多数程序语言接近硬件或高性能,如C、C+...

  • DevOps实践06-服务运行环境

    概述: 现阶段服务运行环境有很多种方式,可以从不同的角度划分。比较原始的有直接在硬件的操作系统上运行,稍高级一点的...

  • 在这里,你不会的大数据之Linux系统安装JDK都可以学到!

    Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux...

  • JVM的作用

    为什么一定要JVM?因为JAVA是一门高级程序语言,符合人的使用习惯,但不符合电脑的理解(二进制)。因此需要在硬件...

  • hwclock显示系统硬件时钟的日期和时间

    ​ 由Linux内核管理的时钟与硬件时钟不同。 硬件时钟运行,即使您关闭您的系统。 硬件时钟也称为BIOS时钟。您...

  • Perl基础

    Perl是什么 一、Perl 简介 Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广...

网友评论

      本文标题:高级程序语言如何在不同的硬件平台上无障碍运行

      本文链接:https://www.haomeiwen.com/subject/xwjncqtx.html