2016-09-11 17 views
0

前回の質問でこのサンプルコードを見ました。私はint add(int a, int b)のパラマターがesiとediに自動的にどのようになっているのか混乱しましたか?これはデフォルトの呼び出し規約ですか?この情報の詳細はどこにありますか?アセンブリでシンボルを呼び出すときに関数パラメータがどのように渡されますか?

.globl _add // make it global so that others can find this symbol 
.... 
_add: // int add(int a, int b) 
    movl %esi, %eax 
    addl %edi, %eax 
    ret 
+0

「デフォルト」とはどういう意味ですか? 20種類のデフォルトがある場合、デフォルトは何ですか? –

+2

_ "この情報の詳細はどこで知ることができますか?" _ https://en.wikipedia.org/wiki/X86_calling_conventions – Michael

+0

@マイケルのおかげで助けになりましたが、エイやエディに自動ロードされたパラメータの答えが見つかりませんでした。 –

答えて

2

System VのAMD64 ABIの呼び出し規約は、Solaris、Linuxの、FreeBSDでは、OS X、[16]に続き、UnixやUnixライクなオペレーティングシステム間でデファクトスタンダードとなっています。 XMM0、XMM1、XMM2、XMM3、XMM4、XMM5、XMM3、XMM4、XMM5、XMM4、XMM5、XMM4、XMM5、 XMM6とXMM7は、特定の浮動小数点引数に使用されます。

ソース:https://en.wikipedia.org/wiki/X86_calling_conventions

+0

[x86タグwiki]の詳細なABIドキュメントへのより詳しいリンク(http://stackoverflow.com/tags/x86/info)。また、[SO docsでのx86呼び出し規約]の概要はあまり詳しくはありません(http://stackoverflow.com/documentation/x86/3261/calling-conventions) –

関連する問題