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と格納順が異なる。