使用 MASM 生成目标文件并 link 它们与 MSVC 目标文件
Using MASM to generate Object files and link them with MSVC Object Files
我想要 link 一个仅包含一个函数的程序集文件和一个从中生成的目标文件。我想知道如何在 MASM 中创建 .obj 文件,我还需要知道如何创建这样的函数。这对于将两个整数相加的函数来说足够了吗?
intadd PROC int1:DWORD int2:DWORD
mov eax, int1
mov ebx, int2
add eax, ebx
intadd ENDP
如果我创建并 link obj 文件,我可以做吗
int x = intadd(1,1);
接收 2?
总结一下:如果 .obj 文件包含上述宏,我需要知道如何从 MASM 创建它,如果我的代码不起作用,我需要知道如何从 HLL 调用宏。
我相信 Visual C++ 的标准安装也会安装 ml.exe
和 ml64.exe
,它们都会生成 .obj
与该版本的 Visual C++ link.exe
.
你可以做的是,一旦你用 ml /c asmfile.asm
将你的汇编文件组装成一个 .obj
文件,在你的 .c
文件中,添加行:
extern int intadd(DWORD int1, DWORD int2);
用 cl /c cfile.c
编译你的 .c
代码,然后 link 两个 .obj
文件用 link asmfile.obj cfile.obj /OUT:exefile.exe
.
编译成最终的可执行文件
请注意,您的汇编函数是无效的,因为一旦您缺少 ret
语句 - 调用它会使您的程序崩溃。
如果您正在寻找有关如何将程序集文件集成到 Visual Studio 中的 Visual C++ 项目的信息, 有一些信息。
我想要 link 一个仅包含一个函数的程序集文件和一个从中生成的目标文件。我想知道如何在 MASM 中创建 .obj 文件,我还需要知道如何创建这样的函数。这对于将两个整数相加的函数来说足够了吗?
intadd PROC int1:DWORD int2:DWORD
mov eax, int1
mov ebx, int2
add eax, ebx
intadd ENDP
如果我创建并 link obj 文件,我可以做吗
int x = intadd(1,1);
接收 2?
总结一下:如果 .obj 文件包含上述宏,我需要知道如何从 MASM 创建它,如果我的代码不起作用,我需要知道如何从 HLL 调用宏。
我相信 Visual C++ 的标准安装也会安装 ml.exe
和 ml64.exe
,它们都会生成 .obj
与该版本的 Visual C++ link.exe
.
你可以做的是,一旦你用 ml /c asmfile.asm
将你的汇编文件组装成一个 .obj
文件,在你的 .c
文件中,添加行:
extern int intadd(DWORD int1, DWORD int2);
用 cl /c cfile.c
编译你的 .c
代码,然后 link 两个 .obj
文件用 link asmfile.obj cfile.obj /OUT:exefile.exe
.
请注意,您的汇编函数是无效的,因为一旦您缺少 ret
语句 - 调用它会使您的程序崩溃。
如果您正在寻找有关如何将程序集文件集成到 Visual Studio 中的 Visual C++ 项目的信息,