[音乐] 上一讲介绍了高级语言程序
如何转换为机器指令表示的二进制代码的大致过程 本讲开始介绍IA-32的机器指令
我们将概要性地介绍IA-32指令系统包括所支持的数据类型 通用寄存器的组织、
标志寄存器、 寻址方式和指令格式 这个是Intel
处理器的整个产品的一个演变图 这部分的产品目前已经停产了
现在使用的这些产品是下面的这些,在这些所有
的Intel处理器产品当中,x86是从8086开始的
8086一直到80286都是16位的体系x86
然后从80386开始是32位的体系结构
组成IA-32,然后从奔4开始64
位架构,现在在用的32位架构和64位架构呢有这样一些产品
这个x86它实际上是Intel开发的一类处理器体系结构的一个泛称
包括我们刚才讲的8086、 80286,这是16位的 然后386、
486这些是32位的 因此这些架构呢因为后面都带有86,所以就称为x86
后来因为数字不能作为注册商标 所以呢就不再沿用x86,比如说386、
486这样的名称 用了这个Pentium、 PentiumPro、 Core等这样的一些名称
现在Intel把32位的x86架构的名称 x86-32改为IA
-32,IA实际上是Intel Architecture的缩写
因此IA-32呢就是Intel体系结构的32位机器的一个泛称
然后64位版本呢是首先由AMD
公司提出来的,这个64位的这个版本它实际上是兼容了IA-32
指令集的,在IA-32的基础上扩充了指令还有寄存器的长度啊、
个数啊 并且更新了参数传递的方式
AMD呢把这个64位的架构称为 AMD64,Intel呢称这个架构呢称为Intel64
要注意的是Intel64这个架构和IA-64这个架构是
完全不一样的,IA-64架构是64位的,但是它采用的是
超长指令字的体系结构,是一套全新的指令系统 和IA-32是不兼容的
现在的这个64位架构呢统称为x86-64 有的时候也简称为x64
所以兼容IA-32的这个64位架构实际上 我们用x86-64或者x64来表示
IA-32的体系结构规定了寄存器的个数、 各自指令 功能以及寄存器的宽度、
存储空间等等,这是我们这一节课的主要的内容 IA-32的体系结构里面规定了有8个
通用寄存器,它们的编号就是0到7 就是0,1一直到7,8个通用的寄存器
另外有一个是标志寄存器 它叫EFLAGs,32位的架构里面有个标志寄存器叫EFLAGs
然后通常的那个PC,就是指令计数器 是用一个专门的叫EIP这样的一个寄存器来实现
可寻址的这个空间是4GB的这个空间,也就是说整个的这个
寻址空间是从0一直到ffffffff
32位的1组成的,因此它是32位的地址
2的32次方等于4个GB 它的指令的格式呢是变长指令字
然后操作码也是变长的 指令当中包含若干个字段,包括操作码字段、
寻址方式 字段以及其他的一些字段等等等等,这是IA-32的这个结构
计算机当中的数据存放在哪里呢? 我们前进讲过,数据或者是在寄存器
当中,若干个寄存器就构成一个通用寄存器组,通用寄存器组
而每一个寄存器都是一个通用寄存器,可以用来存放数据
那么这个就相当于厨房里面的一些盘子 除了我们买回来的菜啊洗好了放在盘子里面
我们还要放在某个地方,我们一般都是可以放在比如说 厨房外面的一些架子上面等等,那么在计算机里面
在CPU外面就是有一存储器,那个存储器里面存放指令和数据
因此在这个指令当中给出来的这个信息里面
对于操作数我们可以存放在寄存器里面,因此操作数
要给寄存器的编号,那么这个操作数要补充存储器的地址,目的操作操作数也是一样的
这个寄存器也相当于宿舍的书架,这个存储器呢相当于图书馆的书架
这样的话计算机系统里面就有靠近CPU的这种临时
存放信息的寄存器和远离CPU的存放更多信息的存储器
[音乐] [音乐]