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

关于CS:IP中ip的值

wenbin168 发布于 2012-11-16 15:24, 651 次点击
今天忽然想到个问题:CS:IP指向的内存地址中的指令(或数据)被执行后IP=IP+指令长度。请问这个指令长度如何确定?是不是CPU内部有一个译码器,一次性读入一连串数据然后由内部译码器解读判断指令长度?
6 回复
#2
assassion1232012-11-16 15:55
帮顶,我也问过这个问题,不过还是没得到准确的回答
#3
zklhp2012-11-16 16:31
以下是引用wenbin168在2012-11-16 15:24:44的发言:

今天忽然想到个问题:CS:IP指向的内存地址中的指令(或数据)被执行后IP=IP+指令长度。请问这个指令长度如何确定?是不是CPU内部有一个译码器,一次性读入一连串数据然后由内部译码器解读判断指令长度?
是不是CPU内部有一个译码器,一次性读入一连串数据然后由内部译码器解读判断指令长度?

差不多是这个意思 但具体的过程我就不知道了
#4
有容就大2012-11-16 21:35
涉及硬件方面的东西吧 可以了解下微机原理方面的知识 不过这个东西还真比较难 不是一下子能搞的很透彻的

俺都没敢碰。
#5
assassion1232012-11-17 07:54
好吧,就暂时按版主的说法理解吧,以后慢慢来
#6
zhu2240392012-11-21 08:52
读一组指令  称为指令队列

这个队列的实现是先进先出的队列
这个是用 硬件实现的 算法,编程过程中 基本上 不用你操心的

读一组指令叫做预读取
这个也算是一种缓冲的做法

遇到 jx jnx 等等 jmp call 指令等等 都会清洗这个指令队列的,这个也是由硬件完成的
呵呵
这个嘛 预读 清洗队列  就这么两个操作 硬件实现 你了解的再清楚 对编程也没多大的帮组 除非你做电子设计
#7
hu9jj2012-11-21 10:22
指令长度是CPU设计时就规定的,同类指令的长度是完全一致的,CUP的控制部分会自动计算IP的增加值的。
1