2008年10月8日星期三
计算机组成学习笔记 (2)--分层架构
就像之前提到的,计算机所能直接理解的语言L0通常都是很难理解的(比如说机器语言),为了简化大部分程序员的工作,开发一种基于L0之上的且易于理解的语言L1就显得很有必要了。同时,也需要一个高效的将L1程序转化成L0指令序列的解释器或者是翻译器M1(其实它起的就是虚拟机的作用)
然而,为了让L0到L1的转化过程变的可行,L1和L0的差别并不能"特别"大,这也就意味着,虽然L1要比L0易于理解一些,但对于一些人仍然显得不够理想(比如说从机器语言到汇编语言,虽然汇编要比二进制码可读性强了很多,但汇编的难度还是不低),于是,在L1的基础上,又有了相应的语言L2和对应的虚拟机M2… 直到语言Ln和对应的虚拟机Mn。
按照这种层次,逐层抽象,在虚拟机Mn上编写程序的程序员并不需要考虑下层的翻译器或者解释器,程序由这种逐层抽象的结构保证其正确性,而无需了解编译器或者解释器实现的具体细节。从而获得正确的结果。
Tanenbaum是这样描绘计算机的分层结构的:
从上至下依次为:
面向问题语言层:为编写解决现实问题的应用程序提供便利,例如 Java C/C++之类的高级语言
汇编语言层:实际上是底层语言的符号表示,只是为程序员提供了一种更舒服的编写底层程序的途径
然后是:操作系统机器层---->指令系统层---->微体系结构层,这些层并不是为普通的程序员提供的,而是为支持高层所需的翻译器或者是编译器而设计的
最后一层是数字逻辑层,这一层涉及的更多的是电气知识。
每层的数据类型、操作和特性构成了该层的体系结构,它的主要作用就是解决该层用户所能看见的问题。
订阅:
博文评论 (Atom)

没有评论:
发表评论