MiniVM开发计划

MiniVM是一个对类汇编语言进行解释执行的解释器。

灵感来源于TinyFM,不同的是,MiniVM将尝试模拟出一台x86,以期提供int中断指令执行IO操作。磁盘IO将重定向至脚本文件相同路径下的.mvmd文件。显示器操作将重定向至控制台,且只提供ASCII字符模式操作。键盘操作会被完整重定向。鼠标操作不会被重定向。

MVM语言将类似于:

%include core.mvm

.DATA start

word 0

.DATA  end

.STACK start

dword 0

dword 0

.STACK end

.CODE start

mov eax,[0]

loop:

add eax,2

cmp eax,128

jne loop

.CODE end

 

 

 

简明现代电子计算机发展史

一.计算机的理论基础

图灵机

基本思想
图灵机,又称图灵计算、图灵计算机,是由数学家阿兰·麦席森·图灵(1912~1954)提出的一种抽象计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人们进行数学运算。
所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:
在纸上写上或擦除某个符号;
把注意力从纸的一个位置移动到另一个位置;
而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号和(b) 此人当前思维的状态。
为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:
1.一条无限长的纸带 TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0,1,2,… ,纸带的右端可以无限伸展。
2.一个读写头 HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
3.一套控制规则 TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
4.一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。
这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。
意义

1、它证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构;

2、 图灵机模型引入了读写与算法与程序语言的概念,极大的突破了过去的计算机器的设计理念;

3、 图灵机模型理论是计算学科最核心的理论,因为计算机的极限计算能力就是通用图灵机的计算能力,很多问题可以转化到图灵机这个简单的模型来考虑。

4、图灵机模型里,现代计算机的物理架构已经隐约体现。

二、现代电子计算机的物理实现

冯诺依曼架构

内容
(1)采用存储程序方式,指令和数据不加区别,混合存储在同一个存储器中,数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断. 指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。
(2)存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。
(3)指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。
(4)通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。
(5)以运算器为中心,I/O设备与存储器间的数据传送都要经过运算器。
(6)数据以二进制表示。
特点
(1)计算机处理的数据和指令一律用二进制数表示
(2)顺序执行程序
计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。
(3)计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 

电路

基本逻辑门电路有与门,或门,非门三种。计算机中通过组合这三种门电路形成了下列基本器件
1.复用器:
数据选择器
解复用器
解码器
优先编码器
位选择器
2.运算器
加法器
减法器
乘法器
除法器
补码器
比较器
移位器
逐位加法器
位查找器
3.存储器
D触发器
T触发器
JK触发器
RS锁存器
寄存器
计数器
移位寄存器
随机数生成器
随机存储器
只读存储器

三、现代电子计算机的发展

电子管计算机

ABC

阿塔纳索夫-贝瑞计算机(Atanasoff-Berry Computer,简称ABC)是法定的世界上第一台电子计算机,是爱荷华州立大学的约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)和他的研究生克利福特·贝瑞(Clifford Berry)在1937年设计,不可编程,仅仅设计用于求解线性方程组,并在1942年成功进行了测试。

背景:上个世纪30年代,保加利亚裔的阿塔纳索夫在爱荷华州立大学物理系任副教授,为学生讲授如何求解线性偏微分方程组时,不得不面对繁杂的计算,那是要消耗大量时间的枯燥工作…… 阿塔纳索夫于是开拓新的思路,从1935年开始探索运用数字电子技术进行计算工作的可能性。
经过两年反复研究试验,思路越来越清晰,设计也大体上想清楚了。但他还需要一位聪明并且懂得机械、又有动手能力的人共同完成这项发明,于是他找到当时正在物理系读硕士学位的研究生克利福德·贝里。
两个人终于在1939年造出来了一台完整的样机,证明了他们的概念是正确的并且是可以实现的。人们把这台样机称为ABC,代表的是包含他们两人名字的计算机 (Atanasoff-Berry Computer)。
这台计算机是电子与电器的结合,电路系统中装有300个电子真空管执行数字计算与逻辑运算,机器使用电容器来进行数值存储,数据输入采用打孔读卡方法,还采用了二进位制。因此,ABC的设计中已经包含了现代计算机中四个最重要的基本概念,从这个角度来说它是一台真正现代意义上的电子计算机。

ENIAC

ENIAC,全称为Electronic Numerical Integrator And Computer,即电子数字积分计算机。ENIAC是世界上第一台通用计算机,也是继ABC(阿塔纳索夫-贝瑞计算机)之后的第二台电子计算机。
它是图灵完全的电子计算机,能够重新编程,解决各种计算问题。它于1946年2月14日在美国宣告诞生。 承担开发任务的“莫尔小组”由四位科学家和工程师埃克特、莫克利、戈尔斯坦、博克斯组成。
ENIAC长30.48米,宽6米,高2.4米,占地面积约170平方米,30个操作台,重达30英吨,耗电量150千瓦,造价48万美元。它包含了17,468根真空管(电子管)7,200根晶体二极管,1,500 个中转,70,000个电阻器,10,000个电容器,1500个继电器,6000多个开关,计算速度是每秒5000次加法或400次乘法,是使用继电器运转的机电式计算机的1000倍、手工计算的20万倍.

虽然ENIAC体积庞大,耗电惊人,运算速度不过几千次,但它比当时已有的计算装置要快1000倍,而且还有按事先编好的程序自动执行算术运算、逻辑运算和存储数据的功能。ENIAC宣告了一个新时代的开始。从此科学计算的大门也被打开了。

历史澄清:
经证实,世界上的第一台计算机应为“ABC”。1941年,“ENIAC”的发明者之一莫科里在阿坦纳索夫家借住5天,借此机会盗取了研究成果及想法,之后与埃克特一起制造了“ENIAC”并申请了专利,被世人称为“现代计算机之父”。而阿坦纳索夫并未重视自己的重大发明“ABC”,学校也没有重视此项发明,并拆掉了“ABC”。后经过美国法院判决,推翻并吊销了莫科里的专利,“现代计算机的基本想法是来自约翰-文森特-阿坦纳索夫。

EDVAC

EDVAC (Electronic Discrete variable Automatic Computer)。离散变量自动电子计算机。
1945年冯·诺依曼以“关于EDVAC的报告草案”为题,起草了长达101页的总结报告。报告广泛而具体地介绍了制造电子计算机和程序设计的新思想。这份报告是计算机发展史上一个划时代的文献,它向世界宣告:电子计算机的时代开始了。
EDVAC方案明确奠定了新机器由五个部分组成,包括:运算器、逻辑控制装置、存储器、输入和输出设备,并描述了这五部分的职能和相互关系.报告中,诺伊曼对EDVAC中的两大设计思想作了进一步的论证,为计算机的设计树立了一座里程碑。
设计思想之一是二进制,他根据电子元件双稳工作的特点,建议在电子计算机中采用二进制。报告提到了二进制的优点,并预言,二进制的采用将大大简化机器的逻辑线路。

可以说EDVAC是第一台现代意义的通用计算机。和之前的世界上第一台电子计算机ENIAC不同,EDVAC首次使用二进制而不是十进制。整台计算机共使用大约6000个电子管和大约12000个二极管,功率为56KW,占地面积45.5平方米,重7850KG,使用时需要三十个技术人员同时操作。

晶体管计算机

1954年,美国贝尔实验室研制成功第一台使用晶体管线路的计算机,取名 TRADIC,装有800个晶体管。

集成电路计算机

1964年4月7日,IBM公司研制成功世界上第一个采用集成电路的通用计算机IBM 360系统,它兼顾了科学计算和事务处理两方面的应用。IBM 360系列计算机是最早使用集成电路的通用计算机系列,它开创了民用计算机使用集成电路的先例,计算机从此进入了集成电路时代。与第二代计算机(晶体管计算机)相比,它体积更小、价格更低、可靠性更高、计算速度更快。IBM 360成为第三代计算机(集成电路计算机)的里程碑。此后,集成电路的发展为微型计算机的出现和发展奠定了基础。1971年,Intel公司研制成功世界上第一款微处理器4004,基于微处理器的微型计算机时代从此开始。1975年1月,美国MITS公司推出了首台通用型Altair 8800计算机,它采用了Intel 8080微处理器,是世界上第一台微型计算机。进入80年代,集成电路设计及加工技术的飞跃发展使得微型计算机机跃上新的台阶。1981年8月12日,IBM正式推出IBM 5150,采用Intel的8088 CPU,主频为4.77MHz, 存储容量为16KB,操作系统为微软的DOS 1.0。IBM将其称为Personal Computer(个人计算机)。不久,“个人计算机”(PC)成为所有个人计算机及微型计算机的代名词。此后,随着集成电路技术的发展,计算机的体积继续缩小,各方面的性能飞速提高,而价格却不断下跌,计算机走进人们生产生活的各个领域。1993年Intel公司推出了第五代微处理器Pentium(中文名“奔腾”),它的集成度已经达到310万个晶体管,主频已达66MHz,计算机从此进入“奔腾”时代。