|
主题 : : 2.10 cs和ip [待解决] |
回复[ 8次 ]
点击[ 490次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-05-17 10:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-17 10:25 |
不会拉图,就是“输入输出控制电路将物理地址20000H送上地址总线”和“从内存20000H单元开始存放的
机器指令B8 23 01通过数据总线被送入CPU”两张图,问题是既然被送上地址总线的是20000H那读取不应该就是在20000H里的“B8“一个值吗?为什么一下出来3个,是什么原因导致出来了3个?为什么不是在20000H里的那个一个值(图片在http://kb.cnblogs.com/a/1422236/的2.14和2.15两张) | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-05-17 12:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
cpu要执行一条指令,必须要将这条指令读取完整后再去执行,至于,内存到Cpu内部的传送,肯定是一次传送一个字的长度。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2012-07-03 20:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2012-07-02 23:18 |
一条指令有几个字节是什么时候判断的呢?按理说CPU要从主存物理地址读取内容后才知道指令有几个字节。这个时候数据总线传送几个字节呢?如果不是在数据总线靠主存端有这个判断的单位,数据总线不知道应该传递几个字节
难道数据总线每次只传递一个,CPU判断了指令还不完整,就继续再传一个字节
还是说,数据总线不管指令是几个字节,不停的传,只是CPU只取一条完整指令,多余的内容被丢弃? | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-07-19 20:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-07-18 22:23 |
其实有些问题,可以不明白,“就是这样的就好了”。应该不影响未来的学习进程。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2012-08-31 14:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-08-21 09:46 |
这个问题也是我想问的,为什么CPU有时候一次取了3个单元,有时候又只取了2个单元,这到底是为什么啊~~~~! | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-10-23 13:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-10-16 16:56 |
问了下度娘,有人说在第一个指令 也就是 B8 ,表示指令、相关容器、指令长度等信息,求真相!! | | |
|
|
|
|
[第6楼]
[ 回复时间:2012-10-24 07:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36 |
|
|
|
|
|
[第7楼]
[ 回复时间:2012-12-22 16:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-19 13:28 |
|
|
|
|
|
[第8楼]
[ 回复时间:2013-03-16 14:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-03-16 12:52 |
我也在困惑这个问题,看了6楼同学的链接。找到一个说法:
数据和指令都是存放在内存单元中的,CPU是分辨不出来的,从一个内存单元读出0-1串,CPU仅仅可以分辨出来这个0-1串在CPU指令集中是存在还是不存在。如果存在就执行,否则就会产生非法指令的错误。
其实还是有一些疑问,不是很清晰,但基本上,我认为可能是这样的:
首先是找到20000,读里面的数据B8,这个要先转换成二进制,到底代表什么,我不知道,但可能这个二进制数据不是一条指令,所以,CPU继续往下读,再读20001的23。加起来就是,是怎么加,哪个在前哪个在后,我也不清楚,但可能就是这两个数据相加。得到一个新的二进制数据。CUP再判断,这个二进制数据可不可以执行,如果可以就执行,不可以就再读,只到把读到的所有数据相加后得到的新的二进制数据可以被CPU理解为一条指令为止,然后CPU就执行这条指令。
后面的就好理解了,CPU读了多少个单元,IP就加上多少,再重复上面的步骤。
不知道我理解的对不对 | | |