12.07.2015 Views

RealView Compilation Tools コンパイラユーザガイド - ARM ...

RealView Compilation Tools コンパイラユーザガイド - ARM ...

RealView Compilation Tools コンパイラユーザガイド - ARM ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

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

コーディング 慣 行表 5-4 は、 コ ンパイ ラによ って 生 成 されたマシン コー ド が 表 5-3 (ページ5-7) の 各 実 装 例 でどの よ う に 逆 アセンブル さ れる かを 示 し た も のです。 いずれの 実 装 の C コード も、 オプシ ョ ン -O2 を 使 用 してコンパイルされています。表 5-4 未 展 開 および 展 開 されたビ ッ ト カウン ト ループ を 表 す 逆 アセンブ リ コー ドビ ッ ト カウン ト ループcountbit1 PROCMOV r1, #0B |L1.20||L1.8|TST r0, #1ADDNE r1, r1, #1LSR r0, r0, #1|L1.20|CMP r0, #0BNE |L1.8|MOV r0, r1BX lrENDP展 開 されたビ ッ ト カウン ト ループcountbit2 PROCMOV r1, r0MOV r0, #0B |L1.48||L1.12|TST r1, #1ADDNE r0, r0, #1TST r1, #2ADDNE r0, r0, #1TST r1, #4ADDNE r0, r0, #1TST r1, #8ADDNE r0, r0, #1LSR r1, r1, #4|L1.48|CMP r1, #0BNE |L1.12|BX lrENDP<strong>ARM</strong>7 では、 シングルビ ッ ト をチェ ッ クする ために、 一 番 左 の 列 に 示 すビ ットカウントループの 逆 アセンブリで 6 サイクルが 必 要 となり ます。 コードサイズはわずか 9 命 令 です。 このビッ トカウン トループの 展 開 バージョ ンは、 1ビット 当 たりわずか 平 均 3 サイクルのペースで、 一 度 に 4 ビッ トをチェックします。 ただし、 その 代 わ り にコードサイズは 増 大 し、 15 命 令 にな り ます。5.1.5 volatile の 使 用高 度 な 最 適 化 レベル -O2 および -O3 でコードをコンパイルすると、 問 題 が 発 生する 場 合 があ り ます。 例 えば、 ハード ウ ェアをポー リ ングする 際 にループから 抜 けられなくなったり、 マルチスレッ ド コードによって 異 常 な 動 作 が 示 された り する 場 合 があ り ます。 このよ うな 場 合 は、 通 常 、 一 部 の 変 数 を volatileと し て 宣 言 する こ と が 必 要 と な り ます。変 数 を volatile と し て 宣 言 する と 、 その 変 数 を 実 装 の 外 部 で ( 例 えばオペレーテ ィ ングシステムまたはハード ウェアによって) いつでも 変 更 でき る ことが、 コンパイラに 伝 達 されます。 volatile で 修 飾 された 変 数 の 値 はいつでも変 化 する 可 能 性 があ る ので、 変 数 が コー ド で 参 照 さ れる たびに、 メ モ リ 内 の5-8 Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0205IJNon-Confidential, ID 100419

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

Saved successfully!

Ooh no, something went wrong!