タグ

alignmentに関するamachangのブックマーク (2)

  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

    amachang
    amachang 2007/09/19
    何故アラインメントしなきゃダメか。→読み出しで2回分&書き込みで4回分メモリアクセスが必要になるから。CPUによっては不正アラインメント例外が発生する。
  • フリーソフトウェア徹底活用講座(8)

    ● コメントの形式 C++ではコメントを次のように記述します. #include <stdio.h> //typedef short t_id; //コメント行 int foo(t_id x); int main(void) もちろんオプションに-ansiまたは-traditionalを指定した場合には,C++方式のコメントは認識されません.ほかの多くのCの実装でもこのようなコメントを使うことができるので,ソースをANSIに限定しなくてよいのなら,このコメント形式を使って問題ないでしょう(リスト7). #include <stdio.h> //コメント typedef short t_id; int foo(t_id x); int main(void) { int result; t_id y; printf("start\n"); y = 2; result = foo(y); pri

    amachang
    amachang 2007/09/19
    __attribute__((aligned(x))) とするとアラインメントが揃う。リザーブとか使わなくてもいい。
  • 1