xusiman 发表于 2017-2-2 16:25:23

cpu是如何知道所执行指令长度的?

cpu始终执行CS:IP所指向内存地址处的指令。指令的长短不一,有1个字节,2个字节,3个字节不等,cpu是如何判断当前指令长度(多少个字节)而不会混淆指令?望大神们指教!

A小小鸟 发表于 2017-3-13 16:19:15

CPU,只需要知道起始地址,然后利用偏移来确定指令的大小的
这样的好处是可以更加灵活的对内存进行索引哦{:5_91:}

heidong84 发表于 2017-5-3 16:19:58

这个是cpu硬件所解决的问题,作为汇编编程,不用管这些。cpu芯片中硬件会根据指令的第一个字节来确定是什么指令,这个指令占几个字节,处理这个指令需要几个周期,这些都是硬件设计中考虑的。软件编程不必考虑如何实现,只要知道占几个字节,需要几个处理周期就行。

heidong84 发表于 2017-5-3 16:25:46

实际上是在设计cpu芯片时,就要考虑设计什么样的指令,指令长度,执行时间,影响哪些寄存器,然后给每个指令一个二进制码,当执行到某个指令的第一个字节时(或者更多更细分)就识别出是什么指令了,芯片硬件做相应的动作。(芯片设计的路过,希望能帮到你)

xusiman 发表于 2017-7-29 11:18:03

8086CPU是经典古老的,我的理解是当CPU被设计出来时它所能执行的指令集就被固定了,CPU只能执行它所认识的指令,这样它能"知道"指令的长度就不足为奇了.
页: [1]
查看完整版本: cpu是如何知道所执行指令长度的?