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.

イ ン ラ イ ンアセン ブ ラ と 組 み 込 みアセン ブ ラの 使 用7.2.3 組 み 込 みアセンブ リ と C/C++ との 式 の 相 違 点組 み 込 みアセンブ リ と C/C++ には 以 下 の 違 いがあ り ます。• アセンブラ 式 は 常 に 符 号 なしです。 同 じ 式 でも、 アセンブラ と C またはC++ では、 値 が 異 な る 場 合 があ り ます。 以 下 に 例 を 示 し ます。MOV r0, #(-33554432 / 2)MOV r0, #__cpp(-33554432 / 2)// result is 0x7f000000// result is 0xff000000• 先 行 ゼ ロ を 伴 う アセンブ ラ の 数 値 は 10 進 数 です。 以 下 に 例 を 示 し ます。MOV r0, #0700 // decimal 700MOV r0, #__cpp(0700) // octal 0700 == decimal 448• アセンブ ラ の 演 算 子 の 優 先 順 位 は、 C/C++ での 優 先 順 位 と 異 な り ます。以 下 に 例 を 示 し ます。MOV r0, #(0x23 :AND: 0xf + 1) // ((0x23 & 0xf) + 1) => 4MOV r0, #__cpp(0x23 & 0xf + 1) // (0x23 & (0xf + 1)) => 0• アセンブ ラ で 記 述 さ れる 文 字 列 の 終 端 は NULL ではあ り ません。DCB "Hello world!"DCB __cpp("Hello world!")// 12 bytes (no trailing null)// 13 bytes (trailing null)注アセンブ ラ の 規 則 は __cpp の 外 で 適 用 され、C または C++ の 規 則 は __cpp. S の中 で 適 用 されます。 詳 細 については、 「__cpp キーワード」 (ページ 7-24) を参 照 し て 下 さ い。7.2.4 組 み 込 みアセンブ リ 関 数 の 生 成1 つの 変 換 ユニ ッ ト 内 のすべての __asm 関 数 の 本 体 は、 <strong>ARM</strong> アセンブラに 渡される 1 つのフ ァ イルに 結 合 されるかのよ う にアセンブルされます。 アセンブラに 渡 されるアセンブリ ファイル 内 の __asm 関 数 の 順 序 は、 テンプレー ト の インスタンスを 使 用 して 生 成 される 関 数 を 除 き、 ソースファイル 内 での 順 序 と同 じになり ます。注復 帰 命 令 を 省 略 し た 場 合 、 フ ァ イル 内 の 1 つの __asm 関 数 の 最 後 から 次 の 関 数に 移 る こ と によ り 、 __asm 関 数 同 士 で 制 御 を 受 け 渡 すこ と が 可 能 です。7-22 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!