联盟的地址协调

时间:2011-11-02 07:46:42

标签: assembly memory-alignment

我对联盟的内存地址变更感到有点困惑。

typedef union { 
               char state[x];
               char encode[4];
               int index;
} Location;

我们在编写代码时使用了几个对齐规则,例如:

int      4 bit alignment
double   4 bit for linux
char *   4 bit for linux

“联盟将如何协调” 对于那些条件; 如果

   x < 4      ?
   x = 4      ?
   x > 4      ?
平台linux 程序集x86 64位

注意:如果您有更好的意见,请在改善该问题时随意

1 个答案:

答案 0 :(得分:1)

我对你的实际问题有点疑惑: - )

但是,如果你问这个联盟将如何协调一致,那么工会必须遵循两个相关的规则。

  1. 所有项目必须从工会开始时开始。
  2. 整个联盟必须保持其最严格的组成部分。
  3. 换句话说,int可能是协调方面的驱动力

    如果单个x的对齐为1,则char的值与此无关。这不是整个数组需要对齐,只是它的每个元素。