急求帮助
CPU执行call指令是push到栈中的是当前的ip的值还是下一条指令的值,我debug过好像是下一条的值但是小甲鱼老师讲的是当前ip的值,究竟答案是什么,求助!!!:'( 你想想,为什么要把指令copy到栈呢? 保存call指令的下一条指令地址 方便使用ret指令返回:D 本帖最后由 javanetwork 于 2011-8-15 11:27 编辑说是当前IP也没错,说是下一条指令也没错,这个问题我一开始也不明白,请听我,慢慢道来
CPU执行指令的过程:根据CS:IP 传送地址-->读取指令-->IP值增加当前指令的长度-->执行指令
在小甲鱼视频里面:刚通过地址总线传送地址要读取指令的时候,IP就已经变了,这个应该是错误
call指令是压栈call的下一条指令的偏移地址,这个没错
但是,读取call指令后,IP已经指向call的下一条指令了,所以压栈的是当前IP也没错
玩语言的阿 其实当cpu执行call指令时,call指令的下一条指令已经进入指令缓冲区,ip也就指向了它(call指令的下一条指令),所以说压入的是当前ip值 ip始终指向下一条指令。
取出当前指令之后,该指令进入指令缓冲器,ip会立即指向下一条指令。 应该是当cpu取出当前指令后,ip的值,就是下一条指令的地址了, 所以说,当前指令执行时ip里面是下一条要自执行的地址
页:
[1]