汇编语言-虚拟机-1.2

虚拟机概念

  • 虚拟机是一种说明计算机硬件和软件关系的有效方法

  • Andrew Tanenbaum的书《结构化计算机组织》(Structured Computer Organization)
    中可以找到对这个模型广为人知的解释。

  • 计算机的最基本功能:执行程序

  • 计算机通常可以执行用其原生机器语言编写的程序。这种语言中的每一条指令都简单到可以用相对的电子电路来执行为了简便,称这种语言为L0

  • 由于L0极其详细,并且只由数字组成,因此,程序员用其编写程序就非常困难。如果能够构造一种较易使用的新语言L1,那么就可以用L1编写程序。

  • 两种实现方法:

  • 解释:运行L1程序时,它的每一条指令都由一个用L0语言编写的程序进行译码和执行。L1程序可以立即开始运行,但是在执行之前,必须对每条指令进行译码

  • 翻译:由一个专门设计的L0程序将整个L1程序转换为L0程序。然后,得到的L0程序就可以直接在计算机上执行。

1、虚拟机
  • 与只使用语言描述相比,把每一层都想象成有一台假设的计算机或者虚拟机会更容易一些。通俗的说,虚拟机可以定义为一个软件程序,用来模拟一些其他物理或虚拟计算机的功能。虚拟机,将其称为VM1,可以执行L1语言编写的指令。
    虚拟机VM0可以执行L0语言编写的指令:

                              _____________________
                              |_____虚拟机VM1______|
                              |_____虚拟机VM0______|
    
  • 每一个虚拟机既可以用硬件构成也可以用软件构成。程序员可以为虚拟机VM1编写程序,如果能把VM1当作真实计算机予以实现,那么,程序就能直接在这个硬件上执行。否则,用VM1写出的程序就被翻译/解释为VM0程序,并在机器VM0上执行。

  • 机器VM1与VM0之间的差异不能太大,否则,翻译或解释花费的时间就会非常多。如果VM1语言对程序员来说还不够友好到足以用于应用程序的开发呢?可以为此设计另一个更加易于理解的虚拟机VM2.这个过程能够不断重复,直到虚拟机VMn足够支持功能强大、使用方便的语言。

  • Java编程语言就是虚拟机概念为基础的。Java编译器把Java语言编写的程序翻译为Java字节码。后者是一种低级语言,能够在运行时由Java虚拟机(JVM)程序快速执行。JVM已经在许多不同的计算机系统上实现了,这使得Java程序相对而言独立于系统。

2、特定的机器
                        ________________________________
                        |____________高级语言____________| Level 4
                        |____________汇编语言____________| Level 3
                        |____________指令集架构(ISA)____| Level 2
                        |____________数字逻辑____________| Level 1

                        图 1-1
  • 与实际机器和语言相对,用Level 2 表示VM2, Level 1 表示VM1。计算机数字逻辑表示为Level 1机器。其上是Level 2,称为指令集架构(ISA,Instruction Set Architecture)。通常,这是用户可以编程的第一个层次,尽管这种程序包含的是被称为机器语言的二进制数制。
  • 指令集架构(Level 2) 计算机芯片制造商在处理器内部设计一个指令集来实现基本操作,如传送、加法或乘法。这个指令集也被称为机器语言。每一个机器语言指令或者直接在机器硬件上执行,或者由嵌入到微处理器芯片的程序来执行,该程序被称为微程序。
  • 汇编语言(Level 3)在ISA层,编程语言提供了一个翻译层,来实践大规模软件开发。汇编语言出现在Level 3,使用短助记符,如ADD、SUB和MOV,易于转换到ISA层。汇编语言程序在执行之前要全部翻译(汇编)为机器语言。
  • 高级语言(Level 4) 高级语言如C、C++和Java。这些语言程序所包含的语句功能强大,并翻译为多汇编指令。汇编语言代码由编译器自动汇编为机器语言。
问题
1.描述虚拟机概念
2.为什么认为翻译的程序比解释的程序执行起来更快
3.(真/假):当L1语言编写的解释程序运行时,其每一条指令都由用L0语言编写的程序进行解码和执行
4.当处理不同虚拟机层次的语言时,说明翻译的重要性
5.为什么软件程序使得被编译的Java程序能够在几乎所有计算机上运行?
6.图1-1中,哪个虚拟机使用机器语言?
7.汇编语言虚拟机的语句被翻译为哪个层次的语句?

你可能感兴趣的:(汇编语言-虚拟机-1.2)