|
主题 : : 检测点2.3 CPU修改了几次IP [待解决] |
回复[ 9次 ]
点击[ 367次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-12-17 16:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-17 16:43 |
mov ax,bx
sub ax,ax
jmp ax
个人意见是一共修改3次,分别是每条指令执行结束后。
但网上流传的答案是修改了4次,其中jmp指令读入是修改一次,结束后修改一次。
我认为jmp指令只是将ip值从本来会是下面一条指令(如果有)改到了最初的mov指令
并没有执行mov指令,因此只修改了3次ip
想听听大家的意见。 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-12-17 18:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2010-10-31 08:38 |
我一直以为是3次。
等待一个权威的。
有办法查看JMP修改IP么? | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-12-17 18:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2010-10-31 08:38 |
|
|
|
|
|
[第3楼]
[ 回复时间:2010-12-22 07:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-23 12:24 |
mov ax,bx
mov ax,ax
各修改一次
jmp ax
本身一次,执行命令又一次!
所以总四次! | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-12-26 09:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-17 16:43 |
回复:[第3楼]
------------------
JMP 的执行就是修改IP,执行完就不需要再改IP了。
所以应该是本身也就是执行时修改1次。
执行完不修改IP。(其余指令执行过程不修改IP,执行完修改IP) | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-05-24 23:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-24 22:56 |
我认为不对,可以见书P26的图,书中说读取完数据之后,IP就变,然后再执行命令,所以是四次 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-05-27 18:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-27 17:48 |
|
|
|
|
|
[第7楼]
[ 回复时间:2011-07-02 19:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-24 08:57 |
检测点2.3
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
CPU四次修改IP
第一次,读取指令mov ax,bx,将其送入指令缓冲器后
第二次,读取指令sub ax,ax,将其送入指令缓冲器后
第三次,读取指令jmp ax,将其送入指令缓冲器后
第四次,jmp ax指令执行完成后
最后IP中的值是0 | | |
|
|
|
|
[第8楼]
[ 回复时间:2011-07-13 18:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-11 13:17 |
ip改变后,才执行指令缓冲器里面的代码,个人感觉应该四次 | | |
|
|
|
|
[第9楼]
[ 回复时间:2012-01-14 02:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-01-10 21:29 |
应该是4次,读取指令后,不管是什么指令在执行前ip都要改变一次,如果是jmp指令也是要改变一次的,然后执行jmp又改变一次,然后再读取下条指令后再改变一次。。。 | | |