0
私は.asmモジュールを持っています。そのプロシージャを.cモジュールで使用したいと思います。 私はMASMを使用していたので、私のコードは次のようになります:変数をnasmプロシージャに渡す
SECTION .text
func PROC arg1: DWORD, arg2:DWORD
...
ret
ENDPROC
と.Cモジュール:
extern "C"{
void func (int arg1, int arg2);
}
は今、私はUbuntuのを使用して、NASMを試してみることにしました。 次の質問があります。単にラベルなので、nasmのプロシージャに引数を渡すにはどうすればよいですか?私のNASMコードの.cモジュールでextern "C"の下に記述された変数を使用するにはどうすればよいですか?
私はまた、スタックを使用してプロシージャに引数を渡すことについて慣習があると聞いています。何とかここで使うことができますか?いくつかの例を教えていただけますか?
すべてが異なります。あなたはUbuntu上で64ビットコードまたは32ビットコードを書こうとしていますか?呼び出し規約は、生成するコードによって異なります。 _NASM_を使用すると、呼び出し規約を理解する必要があります。この規則では、_MASM_がPROC文を使用してほとんどの詳細を非表示にします。 –
私は、x86とx86-64上でGCC関数呼び出しABIを記述する答えを書こうとしていましたが、その後、POSTタグの 'C'で' extern "C" {...} 'を見ました。 Yuk。そのような誤解から始まる人々は、私の意見ではあまりにも道を逸しています。 –