注册 登录
编程论坛 汇编论坛

CPU如何取得下一条指令

rediums 发布于 2008-10-07 20:53, 4020 次点击
X86指令的长短是不同的,有的一个字节长,有的两个字节甚至更长,那么在指令指针IP指向一个内存单元的时候,CPU是如何取得一条完整的指令呢?比如指令是取一个字节还是几个字节?
8 回复
#2
ONEPROBLEM2008-10-07 23:27
我觉得这个问题很有意思.
要弄明白,看来得去查阅有关的<微机原理与结构>之类的书.
但我有个猜测:
CPU在取指阶段,有可能分几个步骤进行.
第一步是,先读取一个字节,判断属于哪种类型的指令,或者说,先从第一个字节得知指令的长度;
第二步,如果指令是多个字节的,则继续往下读取;
最后才确实了指令的类型(或长度).
得到指令的类型之后,就要根据这条指令的要求,读取这条指令后面的数据,共同组成一行代码.
例,mov ax,1000  对应的字节就是:B80010  这里的B8就是指令的类型(或长度),再根据这条指令的要求,将B8后面的00 10 两个字节当作数据,共同组成了完整的代码行.
#3
rediums2008-10-07 23:39
如果是32位的数据总线,取一个字节是不是太浪费了,还有24条数据总线空闲,如果先取4个字节,然后把没用的丢弃不是更好吗?
#4
ONEPROBLEM2008-10-07 23:52
回复 3# rediums 的帖子
呵呵~~高.  是4字节对齐了.
#5
蓝色神话2008-10-08 10:21
应该是指令字节对齐。
#6
zklhp2008-10-08 12:51
这个得看cpu里的指令解释器怎么工作了……
#7
netsolo2008-10-08 14:00
这个和 CPU 的内部寄存器大小和外部数据总线宽度有关
#8
你们都要疼我哦2008-10-10 16:23
指令有6个域,有固定的顺序。 具体请看罗聪的一篇文章,讲的很透彻。 强烈推荐精读。地址

http://www.
#9
zklhp2008-10-10 16:29
[bo][un]你们都要疼我哦[/un] 在 2008-10-10 16:23 的发言:[/bo]

指令有6个域,有固定的顺序。 具体请看罗聪的一篇文章,讲的很透彻。 强烈推荐精读。地址

http://www.


强!

应该有个格式 否则 反汇编的程序怎么写的?
1