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的答案,但後來我在標籤爲'C'的後面看到了'extern「C」{...}'。育。在我看來,那些以這種錯誤觀念開始的人太過任性。 –