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.

イ ン ラ イ ンアセン ブ ラ と 組 み 込 みアセン ブ ラの 使 用BNE loopBX lr}int main(void){const char *a = "Hello world!";char b[20];my_strcpy (a, b);printf("Original string: '%s'\n", a);printf("Copied string: '%s'\n", b);return 0;}7.2.2 組 み 込 みアセンブ リ の 制 限組 み 込 みアセンブ リ 関 数 には 以 下 の 制 約 条 件 があ り ます。• 前 処 理 の 後 に __asm 関 数 が 保 持 でき るのは、 以 下 の 識 別 子 を 除 く アセンブリコードのみです (「 関 連 ベース ク ラ スのキーワー ド 」 (ページ 7-25)および 「メンバ 関 数 クラスのキーワード」 (ページ 7-26) を 参 照 )。__cpp(expr)__offsetof_base(D, B)__mcall_is_virtual(D, f)__mcall_is_in_vbase(D, f)__mcall_offsetof_base(D, f)__mcall_this_offset(D, f)__vcall_offsetof_vfunc(D, f)• __asm 関 数 に 関 し ては、 コ ンパイ ラ に よ って 生 成 さ れる 復 帰 命 令 はあ りません。 __asm 関 数 か ら 復 帰 する には、 復 帰 命 令 を アセンブ リ コー ド で 記述 し、 この 関 数 の 本 体 内 に 含 める 必 要 があ り ます。注組 み 込 みアセンブ ラ では、 __asm 関 数 が 必 ず 定 義 さ れた 順 序 で 発 行 さ れるため、 上 記 の 処 理 によって 1 つの 関 数 か ら 次 の 関 数 へ 移 る こ と が 可 能にな り ます。 ただし、 インラ イン 関 数 とテンプレー ト 関 数 では 動 作 が 異なります (「 組 み 込 みアセンブ リ 関 数 の 生 成 」 (ページ 7-22) を 参 照 )。• 適 用 さ れる AAPCS 規 則 が __asm 関 数 に よ って 変 更 さ れる こ と はあ り ません。 つま り、 __asm 関 数 が 使 用 で き る アセンブ リ コー ド ( 状 態 変 更 な ど)に 制 限 がな く て も、 __asm 関 数 と 通 常 の C/C++ 関 数 と の 間 のすべての 呼び 出 し は、 AAPCS に 準 拠 し ている 必 要 があ り ます。<strong>ARM</strong> DUI 0205IJ Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. 7-21ID 100419Non-Confidential,

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

Saved successfully!

Ooh no, something went wrong!