我有一个.asm模块,我想在.c模块中使用它的程序。 由于我使用MASM,我的代码看起来像:
SECTION .text
func PROC arg1: DWORD, arg2:DWORD
...
ret
ENDPROC
并在.c模块中:
extern "C"{
void func (int arg1, int arg2);
}
现在我使用ubuntu并决定尝试NASM。 所以我有以下问题:如何将参数传递给nasm中的过程,因为它只是一个标签?我如何使用extern" C"中描述的变量?在我的NASM代码中的.c模块?
我也听说过,有一个关于使用stack将参数传递给过程的约定。我可以在某种程度上使用吗?你能告诉我一些例子吗?
答案 0 :(得分:0)
有几点需要指出:
_
。您可以为要公开的每个函数执行此操作: section .text
global _func
_func:
; Do stuff
ret
或者通过nasm编译参数(将对所有函数执行)--prefix _
extern "C"
。玩得开心!