鱼C论坛

 找回密码
 立即注册
查看: 2732|回复: 4

一个汇编CPU取指令的问题

[复制链接]
发表于 2012-1-3 20:47:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
内存地址空间上存了一堆二进制数据,有的是数据有的是地址,CS:IP从内存上去取指令,一次取一条指令出来放入缓存里然后CPU执行。问题是CS:IP是怎么取指令的,因为每条指令的长度是不一样的,CPU怎么知道要取两个字节的还是三个字节的呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-3 21:46:38 | 显示全部楼层
每个命令的二进制数据是不一样的啊,就假如mov ax的16进制数b8,那就读取b8再读取ax大小的数据这样啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-3 21:49:43 | 显示全部楼层
指令都是大小一致的一个字节,CPU取一个指令后要先判断该指令是否带操作数,有操作数的话,是一个还是两个,然后再去取操作数。但是这些对程序透明,我们是看不见的,而且也没有必要去关心
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-1-3 23:01:03 | 显示全部楼层

是操作码都是一个字节吧?!指令的长度可是不一样的,你的意思是根据操作码的不同来判断还需要读取几个字节吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-4 12:02:21 | 显示全部楼层
如果是对ax等操作的话那就是2个字节 ax是16位的  对al或ah等操作那么就是1个字节  有些是对内存大小说明了的 如  byte ptr  1个字节, word ptr 2个字节, dword ptr 4个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表