簡體   English   中英

使用 MASM 生成對象文件並將它們與 MSVC 對象文件鏈接

[英]Using MASM to generate Object files and link them with MSVC Object Files

我想將僅包含一個函數的程序集文件與從中生成的目標文件鏈接起來。 我想知道如何在 MASM 中創建 .obj 文件,我還需要知道如何創建這樣的函數。 這對於將兩個整數相加的函數是否足夠?

intadd PROC int1:DWORD int2:DWORD
mov eax, int1
mov ebx, int2
add eax, ebx
intadd ENDP

如果我創建並鏈接 obj 文件,我可以做

int x = intadd(1,1);

收到2?

總結一下:如果 MASM 包含上述宏,我需要知道如何從 MASM 創建 .obj 文件,以及如果我的代碼不起作用,如何從 HLL 調用宏。

我相信 Visual C++ 的標准安裝也會安裝ml.exeml64.exe ,這兩者都會生成與 Visual C++ 的link.exe版本兼容的.obj文件。

你可以做的是,一旦你用ml /c asmfile.asm將你的程序集文件組裝成一個.obj文件,在你的.c文件中,添加以下行:

extern int intadd(DWORD int1, DWORD int2);

使用cl /c cfile.c編譯您的.c代碼,然后使用link asmfile.obj cfile.obj /OUT:exefile.exe將兩個.obj文件鏈接到最終的可執行文件中。

但是請注意,您的匯編函數是無效的,因為一旦您缺少ret語句 - 調用它會使您的程序崩潰。

如果您正在尋找有關如何將程序集文件集成到 Visual Studio 中的 Visual C++ 項目的信息, 這個問題有一些信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM