前言
数据对齐和其他系统软件( Linker/Loader/Compiler )一样,当程序运行一切正常时,它们是透明的,你不会感受到它们的存在;当你感觉到它们的存在时,那肯定是有麻烦了。我曾记得某同事在Porting 一个协议时,遇到了一个非常困惑的问题:该协议在x86 平台一切正常,只有在ARM 平台才出错。问题最终的解决还是靠仔细比对两种数据平台上抓取的数据,才发现是数据对齐惹的祸。这种错误隐藏很深的原因就是该硬件平台(ARM PT110) 存取未对齐数据时,并不报错(data abort 之类)而且还返回一个貌似正确实际错误的结果。
全文概要
本文将讨论首先讨论一些和对齐有关的基本知识:基本变量和结构变量的对齐以及对齐规则,接着将看到不同的平台访问未对齐数据时的反应,最后我们将回到开头的那个例子来看看究竟是什么导致了程序逻辑错误。
附件为全文pdf版。
|
文件: |
embedded_app_data_alignment.pdf |
大小: |
221KB |
下载: |
下载 | |
阅读(7167) | 评论(0) | 转发(0) |