我们熟知的编程语言C、java、脚本语言等,都是按照顺序执行的,前面提及过的文章中,机器代码也是按照顺序执行的,但是从机器硬件的实现上,近代处理器执行指令的顺序并不是我们所看到的顺序执行,然而,却能保证指令顺序执行的结果。
前提知识:
1.机器指令是二进制格式的代码,以字节为单位的一个或多个的字节序列。
2.指令集体系结构(ISA):一个处理器支持的指令和指令的字节编码。不同的处理拥有不同的指令集体系结构(Intel IA32与x86-64)。因此,一个程序被编译在一个机器上运行,就不能在另外的机器上运行!
图一,指令代码表示
指令的顺序实现
通常,处理一条指令包括很多操作。将它们组织成某个特殊的阶段序列,即时指令动作差异很大,但所有的指令都遵循统一的序列。所有的指令动作都可以囊括为以下五个阶段:
取值:取值阶段从内存读取指令字节,地址为程序计数器(PC)的值。从指令中抽取出指令指示符字节的两个四位部分,称为icode(指令代码)和ifun(指令功能)。它可能取出一个寄存器指示符字节,指明一个或两个寄存器操作数指示符rA和rB。
译码:译码阶段从寄存器文件读入最多两个操作数,得到值valA和/和valB。通常,它读入指令rA和rB字段指明的寄存器,