h8/3048・C言語

icon 項目のみ表示/展開表示の切り替え

変数のバイト数

int = 16bit
long = 32bit
float = 32bit
double = 64bit

アセンブラからみたC言語の関数名

コンパイラが関数名の先にアンダーラインを自動的につけます。
よってCの関数を読み出すときはアンダーラインをを先頭につけてください。
アセンブラソース内でCの関数をimport宣言してください。

Cから呼ばれるアセンブラで破壊してもよいレジスタ/呼ばれたCで破壊されるレジスタ

ER0,ER1
その他のレジスタは呼ばれた側で元に戻さなければならない。

引数の引渡し(戻り値無し)

引数はER0とER1に割り当てます。ただしdouble型および引数の数が多い場合はスタックに割り当てられます。

例1 読み出し:func1(int a,int b,int c,int d, int e,int f) ;

   引数の格納先 a=r0,b=e0,c=r1,d=e1,e=@(4:16,er7),e=@(6:16,er7)
例2 読み出し:func1(int a,long b,int c);
   引数の格納先 a=r0,b=er1,c=e0 2番目にlong型があるので例1と格納順が異なる。