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.

イ ン ラ イ ンアセン ブ ラ と 組 み 込 みアセン ブ ラの 使 用レジスタr0-r3、 sp、 lr などのレジスタ、 および CPSR の NZCV フラグを 使 用 する 場 合は、 注 意 が 必 要 です。 C または C++ の 式 を 使 用 する 場 合 、 こ れら のレ ジ ス タが 一 時 的 なレジスタと して 使 用 され、 式 を 評 価 するときにコンパイラによって NZCV フ ラ グが 壊 さ れる 場 合 があ り ます。 詳 細 については、 「 仮 想 レ ジ スタ」 (ページ 7-9) を 参 照 して 下 さい。物 理 レ ジ ス タ に 直 接 ア ク セスで き ないため、 イ ン ラ イ ンアセンブ リ コー ド を使 用 し て、 レ ジ ス タ pc、 lr、 および sp を 明 示 的 に 読 み 出 し た り 変 更 し た り することはできません。 ただし、 『コンパイ ラ リ ファレンスガイ ド』 で 説 明 されてい る 以 下 の コ ンパイ ラ 組 み 込 み 関 数 を 使 用 する と 、 こ れら のレ ジ ス タ にアクセスできます。• 「__current_pc」 (ページ 4-83)• 「__current_sp」 (ページ 4-84)• 「__return_address」 (ページ 4-101)プロセッサモードユーザは、 プロセ ッサモード の 変 更 またはコプロセ ッ サ 状 態 の 変 更 が 可 能 ですが、 コ ンパイ ラではこれらの 変 更 が 認 識 されません。 プロセッサモードを変 更 する 場 合 、 プロセッサモードを 元 のモードに 戻 してから、 C または C++の 式 を 使 用 する 必 要 があ り ます。 こ れを 行 わない 場 合 、 新 し いプ ロ セ ッ サモード が 原 因 でレジス タがコ ンパイ ラによ って 壊 されます。同 様 に、 浮 動 小 数 点 命 令 を 実 行 する こ と で、 浮 動 小 数 点 コ プ ロ セ ッ サの 状 態を 変 更 する 場 合 、 状 態 を 元 に 戻 し てか ら 浮 動 小 数 点 式 を 使 用 する 必 要 があ ります。Thumb 命 令 セ ッ トC または C++ を Thumb 状 態 で コ ンパイルする と きは イ ン ラ イ ンアセンブ ラ を使 用 で き ません。 ま た、 イ ン ラ イ ンアセンブ ラ は Thumb 命 令 を アセンブル しません。 代 わ り に、 自 動 的 にコ ンパイ ラが <strong>ARM</strong> 状 態 に 切 り 替 わ り ます。Thumb 命 令 に コ ンパ イ ルする コー ド を 含 む ソ ース フ ァ イ ルに イ ン ラ イ ンアセンブ リ を 含 め る 場 合 、 イ ン ラ イ ン アセンブ ラ コー ド を 含 む 関 数 を #pragma armステート メン ト と #pragma thumb ステート メン トで 囲 んで 下 さい。 以 下 に 例 を 示します。... // Thumb code#pragma arm // <strong>ARM</strong> code. Switch code generation to the <strong>ARM</strong> instruction set so// that the inline assembler is available.<strong>ARM</strong> DUI 0205IJ Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. 7-7ID 100419Non-Confidential,

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

Saved successfully!

Ooh no, something went wrong!