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.7 ゼロ 除 算 エ ラーの ト ラ ッ プ と 識 別組 み 込 みシステムの 場 合 は 特 に、 ゼロ 除 算 エ ラーを 容 易 に 修 復 でき る と は 限ら ないので、 こ れら のエ ラーを コー ド か ら 除 去 する こ と が 重 要 と な り ます。<strong>ARM</strong> プ ロ セ ッ サ コ アの 場 合 、 ゼ ロ 除 算 エ ラーは 次 のカテゴ リ に 分 類 さ れます。• ゼロによる 整 数 除 算 エラー• (ソ フ ト ウ ェ ア) ゼ ロ に よ る 浮 動 小 数 点 除 算 エ ラーいずれの 場 合 も、 こ れら のエ ラーを ト ラ ッ プ し て 識 別 する ために、 別 々のテクニックが 必 要 となります。5.7.1 整 数 除 算ゼ ロ に よ る 整 数 除 算 エ ラーは、 適 切 な C ライブラリヘルパ 関 数 を 再 実 装 するこ と に よ って ト ラ ッ プおよび 識 別 で き ます。シグナル 関 数 の 使 用 時 、 あ るいは __rt_raise または __aeabi_idiv0 が 再 実 装 されてい る と き にゼ ロ に よ る 除 算 が 発 生 し た 場 合 、 デフ ォル ト では__aeabi_idiv0 が 呼 び 出 されます。 それ 以 外 の 場 合 は、 除 算 関 数 に よ り ゼ ロ が 返されます。__aeabi_idiv0 は、 追 加 の 引 数 DIVBYZERO と 共 に SIGFPE を 生 成 し ます。ゼロ 除 算 エラーのコードでのト ラ ップゼ ロ に よ る 整 数 除 算 エ ラーは 以 下 の 方 法 で ト ラ ッ プで き ます。• C ライブラリヘルパ 関 数 __aeabi_idiv0 を 再 実 装 し て、 ゼ ロ に よ る 除 算 時にゼ ロ な どの 標 準 的 な 結 果 が 返 さ れる よ う に し ます。整 数 除 算 は、 C ライブラリヘルパ 関 数 __aeabi_idiv および __aeabi_uidivを 使 用 してコードに 実 装 されます。 ど ち ら の 関 数 で も ゼ ロ 除 算 の 有 無 がチェッ ク されます。ゼ ロ に よ る 整 数 除 算 が 検 出 さ れる と 、 __aeabi_idiv0 への 分 岐 が 作 成 されます。 そのため、 __aeabi_idiv0 上 にブレー ク ポ イ ン ト を 設 定 するだけで、ゼロ 除 算 を ト ラップできます。AEABI 関 数 __aeabi_idiv、 __aeabi_uidiv、 および __aeabi_idiv0 の 詳 細 については、 『Run-time ABI for the <strong>ARM</strong> Architecture』 を 参 照 して 下 さい。 このドキュメントは http://www.arm.com/products/Dev<strong>Tools</strong>/ABI.html で 入 手 できます。5-46 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!