最爱酸梅汤 发表于 2012-1-3 20:47:41

一个汇编CPU取指令的问题

内存地址空间上存了一堆二进制数据,有的是数据有的是地址,CS:IP从内存上去取指令,一次取一条指令出来放入缓存里然后CPU执行。问题是CS:IP是怎么取指令的,因为每条指令的长度是不一样的,CPU怎么知道要取两个字节的还是三个字节的呢?

415968430 发表于 2012-1-3 21:46:38

每个命令的二进制数据是不一样的啊,就假如mov ax的16进制数b8,那就读取b8再读取ax大小的数据这样啊

川本姨夫 发表于 2012-1-3 21:49:43

指令都是大小一致的一个字节,CPU取一个指令后要先判断该指令是否带操作数,有操作数的话,是一个还是两个,然后再去取操作数。但是这些对程序透明,我们是看不见的,而且也没有必要去关心

最爱酸梅汤 发表于 2012-1-3 23:01:03

川本姨夫 发表于 2012-1-3 21:49 static/image/common/back.gif
指令都是大小一致的一个字节,CPU取一个指令后要先判断该指令是否带操作数,有操作数的话,是一个还是两个, ...

是操作码都是一个字节吧?!指令的长度可是不一样的,你的意思是根据操作码的不同来判断还需要读取几个字节吗?

wqlovt 发表于 2012-1-4 12:02:21

如果是对ax等操作的话那就是2个字节 ax是16位的对al或ah等操作那么就是1个字节有些是对内存大小说明了的 如byte ptr1个字节, word ptr 2个字节, dword ptr 4个字节
页: [1]
查看完整版本: 一个汇编CPU取指令的问题