12.07.2015 Views

RedHawk Linux User's Guide version 6.3 日本語版

RedHawk Linux User's Guide version 6.3 日本語版

RedHawk Linux User's Guide version 6.3 日本語版

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

32bitコードから64bitコードへの 移 植性 能 問 題 5本 章 の 情 報 は、お 手 持 ちの64bitアプリケーションから 最 高 のパフォーマンスを 得 る 方 法 を 説 明 します。メモリのアライメントおよび 構 造造 体 のパディング 5アライメントの 問 題 は 例 外 は 発 生 しませんが、 性 能 の 衝 突 を 引 き 起 こす 可 能 性 があります。アライメントの 不 整 はいくつかのクロック・サイクルを 犠 牲 にして 実 行 時 に 処 理 されます。 不 十 分 に整 列 したオペランドの 性 能 の 副 作 用 は 大 きくなる 可 能 性 があります。構 造造 体 の 中 のデータは、 結 果 として 空 間 を 無 駄 にするため 非 効 率 となる 可 能 性 のある 境 界 線 に 自然 と 並 べられます。 自 然 な 整 列 とは2byteオブジェクトは2byteの 境 界 線 上 、4byteのオブジェクトは4byteの 境 界 線 上 に 格 納 されることを 意 味 します。例 えば、 以 下 の 構 造造 体 の 定 義 は64bitコードを 生 成 するときに24byteを 消 費 します:typedef struct _s {int x;int *p;int z;} s, *ps;ポインタpは、xメンバーの 後 に 追 加 するために4byteのパディングを 引 き 起 こして8byte 境 界 線上 に 整 列 されます。 更 に、 構 造造 体 を8byteの 境 界 線 に 合 わせようと 穴 埋 めするためにzメンバーの 後 に4byteのパディングが 追 加 されます。最 も 効 果 的 な 構 造造 体 のパッキングは、 構 造造 体 内 で 最 大 から 最 小 へメンバーをパッキングすることにより 実 現 されます。 以 下 の 宣 言 はより 効 果 的 です。これはたったの16byteで、どのようなパディングも 必 要 としません:typedef struct _s }int *p;int x;int z;} s;潜 在 的 なパディングのために、 構 造造 体 内 のフィールドの 一 定 のオフセットを 見 つける 最 も 安 全 な方 法 は、stddef.hに 定 義 されているoffsetof()マクロを 使 用 することです。E-7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!