A.2.3 アセンブラ命令の埋め込み

CC-RHでは,次に示す形式において,Cソース・プログラム中にアセンブラ命令を記述できます。これは,関数そのものをアセンブラ命令とみなして,呼び出し箇所にインライン展開します。

-

#pragma指令

#pragma inline_asm
static int func(int a, int b) {
        /*アセンブラ命令*/
}

 

備考 1.

アセンブラ埋め込み使用時には,下記の点に注意してください。

-

#pragma inline_asmは,関数本体の定義の前に指定してください。

-

#pragma inline_asmで指定した関数に対しても外部定義を生成します。

-

アセンブラ埋め込みインライン関数内で関数の出入口で保証するレジスタを使用する場合は,アセンブラ埋め込みインライン関数の先頭と最後でこれらのレジスタの退避/復帰が必要です。

-

RH850のアセンブリ言語は,#で始まるコメントを使用できます。#コメントを使うと,プリプロセッサは前処理指令と解釈するため,アセンブリ記述関数内では#コメントを使わないでください。

-

アセンブリ記述関数内にラベルを書くと,インライン展開の数だけ同一名のラベルが作られてしまいます。この場合は,アセンブリ記述のローカル・ラベルを使ってください。ローカル・ラベルはアセンブリ・ソースでは同一名ですが,アセンブラが自動的に別名に変換します。

備考 2.

アセンブラ命令の記述」を参照してください。