鱼C论坛

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

[已解决]cpu是如何知道所执行指令长度的?

[复制链接]
发表于 2017-2-2 16:25:23 | 显示全部楼层 |阅读模式

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

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

x
cpu始终执行CS:IP所指向内存地址处的指令。指令的长短不一,有1个字节,2个字节,3个字节不等,cpu是如何判断当前指令长度(多少个字节)而不会混淆指令?望大神们指教!
最佳答案
2017-5-3 16:25:46
实际上是在设计cpu芯片时,就要考虑设计什么样的指令,指令长度,执行时间,影响哪些寄存器,然后给每个指令一个二进制码,当执行到某个指令的第一个字节时(或者更多更细分)就识别出是什么指令了,芯片硬件做相应的动作。(芯片设计的路过,希望能帮到你)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-13 16:19:15 | 显示全部楼层
CPU,只需要知道起始地址,然后利用偏移来确定指令的大小的
这样的好处是可以更加灵活的对内存进行索引哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-3 16:19:58 | 显示全部楼层
这个是cpu硬件所解决的问题,作为汇编编程,不用管这些。cpu芯片中硬件会根据指令的第一个字节来确定是什么指令,这个指令占几个字节,处理这个指令需要几个周期,这些都是硬件设计中考虑的。软件编程不必考虑如何实现,只要知道占几个字节,需要几个处理周期就行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-3 16:25:46 | 显示全部楼层    本楼为最佳答案   
实际上是在设计cpu芯片时,就要考虑设计什么样的指令,指令长度,执行时间,影响哪些寄存器,然后给每个指令一个二进制码,当执行到某个指令的第一个字节时(或者更多更细分)就识别出是什么指令了,芯片硬件做相应的动作。(芯片设计的路过,希望能帮到你)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-29 11:18:03 | 显示全部楼层
8086CPU是经典古老的,我的理解是当CPU被设计出来时它所能执行的指令集就被固定了,CPU只能执行它所认识的指令,这样它能"知道"指令的长度就不足为奇了.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-16 06:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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