边界对齐是与编译器相关的还是与处理器相关,我该怎么设置边界对齐?谢谢!

hefang0511   2008-7-17 10:54 楼主
请教大家,结构体的边界对齐是与编译器相关的还是与处理器相关的?
我的编译器是Tornado,处理器是PPC,有人告诉我该怎么设置边界对齐吗?谢谢

回复评论 (5)

处理器是PPC?这个什么概念?

边界对齐是跟具体的应用相关,应用层取值有边界对齐的要求的话,那么提供给这个应用所调用的数据就得是边界对齐。

边界对齐假设32bit,那么你的数据必须都是32bit的倍数,因为取值是按32bit 32bit 32bit这样来取的。要是你的实际数据是24bit,你就得将其高8位填0,凑成32bit。
点赞  2008-7-17 12:53

边界对齐其实就是内存对齐;

把内存中的字节对齐后,cpu对数据的访问处理就会高效一些。

怎么对齐?按多少字节对齐都是实际应用相关的。没有规定。

不对齐一样能跑。
点赞  2008-7-17 13:06
问题已解决,谢谢楼上各位!以下是在Tornado中强制一个字节对齐

  1. /*Ren  13:33:13 17-jul-2008*/
  2. /* 页信息 */ /* 存放在每个页的第四个扇区的备用区中 */
  3. typedef struct
  4. {
  5.         uChar state;        /*页状态信息包括:数据无效、数据有效、空闲*/
  6.         uInt32 pageNum;     /* 逻辑页号 */                                 
  7. }__attribute__((packed, aligned(1))) Page_info;

点赞  2008-7-17 13:50
引用: 引用 1 楼 shuiyan 的回复:
处理器是PPC?这个什么概念?

......

PPC==>PowerPC, ^_^
点赞  2008-7-17 13:56
真有用呀
点赞  2010-3-18 18:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复