gccで使用するファストコールの使用例はありますか?可能であれば、ファストコールを使用せずに同等の通話を提供し、それがどう違うのか説明できますか?ここでFastcall GCCの例
9
A
答えて
17
です。唯一の違いは関数宣言にあります。 GCC manualに詳細があります。
$ cat fastcall.c
extern void foo1(int x, int y, int z, int a) __attribute__((fastcall));
extern void foo2(int x, int y, int z, int a);
void bar1()
{
foo1(99, 100, 101, 102);
}
void bar2()
{
foo2(89, 90, 91, 92);
}
$ gcc -m32 -O3 -S fastcall.c -o -
.
.
bar1:
.
.
movl $100, %edx
movl $99, %ecx
movl $102, 4(%esp)
movl $101, (%esp)
call foo1
.
.
bar2:
.
.
movl $92, 12(%esp)
movl $91, 8(%esp)
movl $90, 4(%esp)
movl $89, (%esp)
call foo2
2
は、与えられた関数の呼び出しは、Cコードに表示される方法に違いはありませんいくつかのリンク
Is it possible to convince GCC to mimic the fastcall calling convention?
関連する問題
- 1. GCC fastcall関数
- 2. 現在のGCC例外モデルの取得
- 3. C++例外、GCCと "インライン関数"フラグ
- 4. visualcで使用されるfastcallキーワードは何ですか?
- 5. gcc with gcc 4.4.3
- 6. gcc assemblyコマンド(.type)の使い方は?例えば
- 7. この例でGCCが警告を出さない理由
- 8. %GCCのPowerPC GCCレジスタの印刷
- 9. grepで色付きテキスト、例: gcc | colorgcc | grep regexp
- 10. gccの
- 11. パフォーマンス比較 - gccとllvm-gcc
- 12. コードをgccに直接渡すことはできますか?例:gcc - ? 'int main(){return 0;}'
- 13. gcc -ggdbとgccの違い-12
- 14. eclipseでクロスGCCとMacOSX GCCの違い
- 15. GCCの性能
- 16. GCC stdio.hのエラー
- 17. gccのコンパイルエラー6.2
- 18. GCCのタプルテンプレート
- 19. gccのConcepts-Lite
- 20. GCCの警告
- 21. のgcc:コマンドが
- 22. GCCバージョンのバイナリファイル
- 23. グローバルデータメモリレイアウトのgccルール
- 24. ジェネリックバリアブルラムダのGCCコンパイラエラー
- 25. ANTLR4 - gcc(GCC)4.4.7 20120313(Red Hat 4.4.7-11)
- 26. GCC 4.5.2リンカGOTS問題の例外を使用している(C++)は
- 27. gccエラーメッセージリポジトリ
- 28. gccメイクファイル:%
- 29. gccコンパイラ__SIZE_TYPE__
- 30. GCCは
違いを強調するために通話後のクリーンアップを表示する必要がありますか? +1のマニュアルx-ref。 –