免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1907 | 回复: 2
打印 上一主题 下一主题

X86平台工程师进 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-17 12:33 |只看该作者 |倒序浏览
我想问I386地址对齐问题。例如一条指令MOV EAX,(0001H)
这里用了直接寻址方法(ARM中好想没有这种寻址法,而是用伪指令LDR  R0,=ADDR)这条指令就是说访问内存中从0001(16进制)开始的四字节,之所以为四字节因为是EAX,I386也是32位处理器,一次也是访问4字节倍数的地址,所以MOV要取内存中0001,0002,0003,0004,而000004属于下一个四字节,(0000-0003为4字节;0004-0007为下一四字节)这样一条指令难道执行时要寻址两次还是出错呢??很费解。麻烦给点解答
还有一个问题,保护模式下,对IO空间的地址访问。I386分IO空间与内存空间,如果把IO设备放在了内存空间就可以通过影射使用虚拟地址访问,但是如果不使用IO内存映射,直接把设备放在IO空间那么我们只能用IN,OUT指令访问,但是为什么保护模式下IN,OUT对IO空间的访问使用的是物理地址,是不是I386所谓保护模式只是针对内存空间》???

论坛徽章:
0
2 [报告]
发表于 2010-11-18 03:01 |只看该作者
1.我觉得是寻2次. 可以看看这篇: http://linux.chinaunix.net/bbs/thread-1145097-1-40.html

2. 物理地址和保护模式没有关系啊. 在保护模式下, LINUX 可以不让 USER LEVEL APP 访问 IO PORT. 虽然打开访问后, 使用的地址还是物理地址.

论坛徽章:
0
3 [报告]
发表于 2010-11-18 16:21 |只看该作者
回复 1# WZXZLY


    x86支持非4字节对齐访问方式,其他RISC体系大多不支持。

  x86的内存空间和IO空间是两种不同的地址空间,IO空间直接用其物理地址访问,内存空间访问需做remap
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP