h8/3048・C言語
変数のバイト数
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と格納順が異なる。