わかりまし定義なので、私はできコール__attribute__((fastcall))
でそれを宣言することにより、fastcall CCとして機能。 ファンクション自体をファストコールとして定義するにはどうすればよいですか?GCC fastcall関数
// caller.c
unsigned long func(unsigned long i) __attribute__((fastcall));
void caller() {
register unsigned long i = 0;
while (i != 0xFFFFFFD0) {
i = func(i);
}
}
と機能:
のように、私は、呼び出し元のコードを持っている。このコードでは
// func.c
unsigned long func(unsigned long i) {
return i++;
}
を、func()
がCDECLとしてコンパイルされている、それがスタックから私を抽出し、 ecx(これはi386です)からではありません。
私はfunc.cでunsigned long func(unsigned long i) __attribute__((fastcall));
を記述する場合、それはちょうど私がfunc.cに私がcaller.cで行ったのと同じ方法でそれを宣言した場合、それは他に文句を言うでしょう
error: expected ‘,’ or ‘;’ before ‘{’ token
を言って、コンパイルされませんway:
error: previous declaration of ‘func’ was here
func.cを必要とする「FUNC」の前の宣言は、定義の前に属性を入れてみてください@eincludeここ – einclude
ました。更新された応答 –
ありがとうございました。 – einclude