64位数据地址的对齐是8对齐吗

marcus2006 2014-11-26 04:16:29
看了一些关于内存地址对齐的文章,还有些不懂
对齐的意思似乎就是能被N整除?N是数据地址线的字节数
如16bit系统就是2对齐,32位就是4对齐
那64位是8对齐吗??

如 http://blog.chinaunix.net/uid-22283027-id-3985411.html与http://blog.csdn.net/donkeylong/article/details/4909720提到
”某些CPU只能在能够被4整除的地址进行内存访问, 这是因为: 32位CPU不使用地址总线的A1和A2. (比如ARM, 它的A[0:1]用于字节选择, 用于逻辑控制, 而不和存储器相连, 存储器连接到A[2:31].)
访问内存的最小单位是字节(byte), A0和A1不使用, 那么对于地址来说, 最低两位是无效的, 所以它只能识别能被4整除的地址了

而http://www.360doc.com/content/11/1024/21/7725999_158799756.shtml提到
8086,80186,80286和80386sx ” 每个内存周期,CPU只能读取一个偶单元和一个奇单元。地址总线的地址为偶单元的地址,所以说地址总线的地址永远是2对齐的。“
80386之后的cpu ”通过上图和参考上面16bit数据总线CPU的分析,可以看出32bit数据总线在每个内存周期中读取的数据地址都是以4对齐的。“

这些论述是否矛盾呢?
...全文
374 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
marcus2006 2014-11-27
  • 打赏
  • 举报
回复
昨天用手机paste的地址,谁知道打不开。请用百度搜索"现代微机结构_80486",看” (二) 内部寄存器“
marcus2006 2014-11-26
  • 打赏
  • 举报
回复
终于让我找到了证据
http://wk.baidu.com/view/72bb7818227916888486d766?pcf=2&bd_source_light=1550401
16位地址线的最低1位用于选字节,32位地址线的最低2位用于选字节,类推,64位地址线的最低3位用于选字节。故他们分别是2、4、8字节对齐

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧