CPU如何取得下一条指令
X86指令的长短是不同的,有的一个字节长,有的两个字节甚至更长,那么在指令指针IP指向一个内存单元的时候,CPU是如何取得一条完整的指令呢?比如指令是取一个字节还是几个字节?
我觉得这个问题很有意思.
要弄明白,看来得去查阅有关的<微机原理与结构>之类的书.
但我有个猜测:
CPU在取指阶段,有可能分几个步骤进行.
第一步是,先读取一个字节,判断属于哪种类型的指令,或者说,先从第一个字节得知指令的长度;
第二步,如果指令是多个字节的,则继续往下读取;
最后才确实了指令的类型(或长度).
得到指令的类型之后,就要根据这条指令的要求,读取这条指令后面的数据,共同组成一行代码.
例,mov ax,1000 对应的字节就是:B80010 这里的B8就是指令的类型(或长度),再根据这条指令的要求,将B8后面的00 10 两个字节当作数据,共同组成了完整的代码行.