响当当 发表于 2011-8-15 09:52:36

急求帮助

CPU执行call指令是push到栈中的是当前的ip的值还是下一条指令的值,我debug过好像是下一条的值但是小甲鱼老师讲的是当前ip的值,究竟答案是什么,求助!!!:'(

parbbo 发表于 2011-8-15 10:18:17

你想想,为什么要把指令copy到栈呢?

mfshik 发表于 2011-8-15 10:21:13

保存call指令的下一条指令地址 方便使用ret指令返回:D

javanetwork 发表于 2011-8-15 11:26:09

本帖最后由 javanetwork 于 2011-8-15 11:27 编辑

说是当前IP也没错,说是下一条指令也没错,这个问题我一开始也不明白,请听我,慢慢道来

CPU执行指令的过程:根据CS:IP 传送地址-->读取指令-->IP值增加当前指令的长度-->执行指令

在小甲鱼视频里面:刚通过地址总线传送地址要读取指令的时候,IP就已经变了,这个应该是错误

call指令是压栈call的下一条指令的偏移地址,这个没错

但是,读取call指令后,IP已经指向call的下一条指令了,所以压栈的是当前IP也没错

parbbo 发表于 2011-8-15 11:46:14

玩语言的阿

hj937733396 发表于 2011-8-15 11:54:43

其实当cpu执行call指令时,call指令的下一条指令已经进入指令缓冲区,ip也就指向了它(call指令的下一条指令),所以说压入的是当前ip值

bevin 发表于 2011-8-15 19:06:05

ip始终指向下一条指令。
取出当前指令之后,该指令进入指令缓冲器,ip会立即指向下一条指令。

/db_八神_/zq 发表于 2011-8-15 19:58:13

应该是当cpu取出当前指令后,ip的值,就是下一条指令的地址了, 所以说,当前指令执行时ip里面是下一条要自执行的地址
页: [1]
查看完整版本: 急求帮助