タグ

.64bitに関するsankasekiのブックマーク (2)

  • Linuxと64bit環境 VA Linux Systems Japan

    一般に、ILP32環境とLP64環境とでは、同一サイズの整数、実数であってもアライメントが異なります。IA-32とx86-64においても、【2.2 AMD64/Intel 64への対応】で示したように、32bitより大きな幅を持つスカラー型のアラインメントが変わっています。構造体や共用体では、そのメンバのうちもっともアラインメントの制約の強いものに合わせて大きさやアラインメントが決定されるため、メンバの順序などによってはサイズやアラインメントが大きく変化する可能性があります。 例えば、次の構造体の大きさは、bのアラインメントが異なるために、IA-32では12バイト、x86-64では16バイトとなります。

    sankaseki
    sankaseki 2008/06/26
    Linuxと64bit環境 VA Linux Systems Japan
  • 64bit環境 - odawaraの「はてな de メモ」

    当たり前だが、ポインタのサイズは64bit。そういえば前に調べた型サイズには入れてなかったな…。 で、32bitでは動くが、64bitでは動かないソースに苦しめられた。カッとなって検証コードを作成してみた。 #include <stdio.h> short func(unsigned short *b,int *c){ *b++; *c = (int)b; return 0; } int main(void){ unsigned short a[0x8000]; unsigned short *b; int c; a[0] = 0; a[1] = 1; b = &a[0]; printf("%d\n",*b); func(b,&c); printf("%lx\n",b); printf("%lx\n",c); b = (unsigned short*)c; printf("%lx\n",b

    64bit環境 - odawaraの「はてな de メモ」
    sankaseki
    sankaseki 2008/06/23
    64bit環境 - odawaraの「はてな de メモ」
  • 1