迅维网
标题:
地址线编号为什么是add[3-31]而不是add[0-31]
[打印本页]
作者:
南门二饼
时间:
2011-5-13 12:39
标题:
地址线编号为什么是add[3-31]而不是add[0-31]
add[0-2]干什么用了
作者:
大开幕
时间:
2011-5-14 19:32
因为CPU是8位寻址
作者:
南门二饼
时间:
2011-5-14 23:46
回复
大开幕
的帖子
就是说,cpu读到一个起始地址,那后七个就自动都算出来了。所谓的8位连读。
但这与29条线有什么关系?
作者:
dadabd
时间:
2011-5-27 08:40
我也想知道?
作者:
wuxianglin2000
时间:
2011-5-27 16:24
好像还有的是add[0~1]不接,不知道为什么!会不会和64,32位机寻址方式有关呢,一直没搞明白
作者:
nicolas
时间:
2011-6-3 13:12
本帖最后由 nicolas 于 2011-6-3 13:14 编辑
举个例子给大家:
期末考试了,现在发试卷,如果老师一个一个人的发,就要走到每个人的位置上,也就是一位一位的读写
有的老师比较懒,假如你们班有8列8排,老师一次发8张,只要递给每一列第一排的那个人就好了,然后依次往后发,收卷的时候正好相反.这样老师就只要找到每列第一个学生的位置就好了.
而对于32位的CPU也一样,它8位8位的读写,就是把你们班32排8列的人分成32组,8人一组,老师吧试卷只需要交给8人中的第一个就好了,CPU地址又是从高位到低位依次读写,当他读到倒数第3位时,他就不往下读了(懒),然后直接往后3位读写数据,那么后三位地址线你认为还有用吗?已经聋子的耳朵,摆不摆一样...
------------------------------------------------------------------------------------------------------------------
字节0 字节1 字节2 字节3 字节4 字节5 字节6 字节7
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007
如上图,我们给出8个字节以及8个字节对应的地址,从0x0000~0x0007
ARM32位寻址时,一次对32bit=4字节进行操作。那么第一次访问的4个字节的地址=0x0000。那么下一次访问的地址是0x0001吗?
错啦,是0x0004,因为第一次寻址的时候已经对0x0000--0x0003地址进行了操作。
那么,我们来归纳一下每次访问的地址:
1st :0x0000
2nd:0x0004
3st :0x0008
4th :0x000C
如果换算成二进制,可以发现最低的两位总是00
同样的道理,如果MCU和Memory之间采用16bit接口,那么最低位总是0
欢迎光临 迅维网 (https://www.chinafix.com/)
Powered by Discuz! X3.4