You are currently browsing the archives for the day: Tuesday, den 3. August 2010.

August 3, 2010

gccでのi386とamd64におけるワードアライメントの動作の違い

Linux (Debian lenny)で、メモリダンプとかsocket経由の通信とかを行うラッパライブラリを試験していて、データを突っ込む構造体の中のワードアライメントが(amd64で)思ったのと違っていることに気づいて、少し試験してみた。昔のi386の時代は、4byteごとにアライメント境界が来るからそれにあわせて、という話があったけれど、そうではない様子。 環境はDebian lennyのパッケージそのままで、次のような感じ。 @i386 (32bit) % gcc -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v –with-pkgversion=’Debian 4.3.2-1.1′ –with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs –enable-languages=c,c++,fortran,objc,obj-c++ –prefix=/usr –enable-shared –with-system-zlib –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –enable-nls –with-gxx-include-dir=/usr/include/c++/4.3 –program-suffix=-4.3 –enable-clocale=gnu –enable-libstdcxx-debug –enable-objc-gc –enable-mpfr –enable-targets=all –enable-cld –enable-checking=release –build=i486-linux-gnu –host=i486-linux-gnu –target=i486-linux-gnu Thread model: posix gcc version 4.3.2 (Debian 4.3.2-1.1) % uname -a Linux lenny-i386 […]

more...