次のページ 前のページ 目次へ 5. パディング パディングとは,アラインメント条件を満たすために構造体に勝手に入っ てしまう「詰めもの」のことです. これもアラインメントと同様,RISC アーキテクチャのプロセッサでは一般的 な話題です. 5.1 例 パディング自体は x86 でも生じます. が,以下のプログラムは,x86 と ARM でパディングの挙動が異なる例です. #include <stdio.h> struct s0 { unsigned char a, b, c; }; struct s1 { char d; struct s0 e; }; main ( void ) { struct s1 s; void *s_a = (void *)&s, *d_a = (void *)&s.d, *e_a = (void *)&s.e; printf ( "d = %d\n", d_a
次のページ 前のページ 目次へ 4. アラインメント まずは肩慣らし. アラインメントについては RISC アーキテクチャでは一般的な話で,ARM に限っ たことではありません. x86 以外の アーキテクチャでは,2バイト整数型や4バイト整数型の変数を 配置できるメモリアドレスに制限があります. 2バイト整数型は,偶数アドレスに 4バイト整数型は,4で割り切れるアドレスに 配置しなくてはいけません. 4.1 アラインメント条件を満たさないと アラインメント条件を満たさないメモリアクセスが発生した場合,ARM では例 外が発生します. が,ARM Linux 上ではこの例外をカーネルで捕捉し,「うまく処理する」よう になっています. ARM Linux では /proc/cpu/alignment で,この例外の捕捉状況を表 示したり,処理の変更を指示することができます. $ cat /p
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く