12.07.2015 Views

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

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

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

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

コーディング 慣 行int main(void){float a, b, c;// Trap the Invalid Operation exception and untrap all other exceptions:__ieee_status(FE_IEEE_MASK_ALL_EXCEPT, FE_IEEE_MASK_DIVBYZERO);c = 0;a = b / c;printf("b / c = %f, ", a); // trap division-by-zero errorreturn 0;}ゼロ 除 算 エ ラーのコー ド での 識 別C ライブラリヘルパ 関 数 _fp_trapveneer は、 例 外 が 発 生 する たびに 呼 び 出 さ れます。 こ の 関 数 の 呼 び 出 し 時 、 レ ジ ス タ の 状 態 は、 例 外 が 発 生 し た と き か ら変 更 さ れていません。 そのため、 ブレークポイン ト を 関 数 _fp_trapveneer に 設定 して LR を 参 照 する と 、 例 外 を 返 し た 演 算 が 含 まれてい る 関 数 のア ド レ ス をアプ リ ケーシ ョ ンコードで 見 つける こ とができます。例 えば、 例 5-6 (ページ 5-48) の C コー ド は、 次 の 文 字 列 を 使 用 し て コ マン ドラインからコンパイルされます。armcc --fpmode ieee_fullコンパイ ラによって 生 成 されるアセンブ リ 言 語 コードが 逆 アセンブルされると、 <strong>RealView</strong> Debugger によって 例 5-7 に 示 す 出 力 が 生 成 さ れます。例 5-7 ゼロ 除 算 エラーの 逆 アセンブリmain:00008080 E92D4010 PUSH {r4,lr}00008084 E3A01C02 MOV r1,#0x20000008088 E3A00C9F MOV r0,#0x9f000000808C EB000F1A BL __ieee_status 00008090 E59F0020 LDR r0,0x80b800008094 E3A01000 MOV r1,#000008098 EB000DEA BL _fdiv 0000809C EB000DBD BL _f2d 000080A0 E1A02000 MOV r2,r0000080A4 E1A03001 MOV r3,r1000080A8 E28F000C ADR r0,{pc}+0x14 ; 0x80bc000080AC EB000006 BL __0printf 000080B0 E3A00000 MOV r0,#0000080B4 E8BD8010 POP {r4,pc}<strong>ARM</strong> DUI 0205IJ Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. 5-49ID 100419Non-Confidential,

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

Saved successfully!

Ooh no, something went wrong!