免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: li574000
打印 上一主题 下一主题

关于结构类型对齐的疑惑 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-02-23 17:01 |只看该作者
见 的Architechture一项,里面对RISC,x86, x86-64这几种计算机架构都给了各自元数据对齐方法的解释。
sbc19861004 发表于 2010-02-23 16:59



    谢谢,我先看看

论坛徽章:
0
12 [报告]
发表于 2010-02-23 17:33 |只看该作者
既然不是定长,那代码段的指令是否对齐的哪?不知道这个对齐到底最底层是和编译器有关还是和CPU有 ...
li574000 发表于 2010-02-23 16:59



pragma pack 只对数据段有效, 数据读取和指令读取是两种流程,读取数据时存在一个word大小(即一次读取大小)的问题,产生对齐问题;而对于指令,在CISC情况下会先读一字节,然后判断后决定再读入几字节组成此次指令,而RISC未研究。。

对于我第一次想当然的回复表示抱歉

论坛徽章:
0
13 [报告]
发表于 2010-02-23 17:40 |只看该作者
对齐可不仅仅是效率问题哦,对于一些ARM的芯片,是必须4字节对齐访问内存的。

如果LZ有向ARM之类的RISC移植原来X86上的程序的经验的话,估计会对对齐有着刻骨铭心的记忆阿。

论坛徽章:
0
14 [报告]
发表于 2010-02-24 01:45 |只看该作者
基础类型的数据当然也要对齐了,只不过基础类型的数据对齐之后只影响位置,不影响sizeof,你感觉不到而已,而结构体对齐后,sizeof变了,你感觉明显。

评分

参与人数 1可用积分 +10 收起 理由
langue + 10 我很赞同

查看全部评分

论坛徽章:
0
15 [报告]
发表于 2010-02-24 06:37 |只看该作者
指令是否对齐,这取决于 CPU architecture。
x86 不存在指令对齐的问题,而 ARM 指令是 4 字节对齐,Thumb 是 2 字节对齐。

论坛徽章:
0
16 [报告]
发表于 2010-02-24 09:06 |只看该作者
谢谢各位,基本上明白了,不过由于对处理器具体架构知识的匮乏,可能理解的还是有些地方不是很到位,我想这个问题是一个比较重要又基础的问题,国内的相关文章大多谈论对齐规则,鲜有提及幕后的工作机制的,不知道哪个大牛能够写篇这方面的文章,对社区也是一大贡献
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP