Использование MASM для генерации объектных файлов и связывания их с объектными файлами MSVC - PullRequest
0 голосов
/ 01 марта 2019

Я хочу связать файл сборки, который содержит только одну функцию, с объектным файлом, сгенерированным из.Я хотел бы знать, как создавать файлы .obj в MASM, и мне также нужно знать, как создать такую ​​функцию.Достаточно ли этого для функции, которая добавляет два целых числа вместе?

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

Если я создаю и связываю файлы obj, могу ли я сделать

int x = intadd(1,1);

для получения 2?

Подводя итог: мне нужно знать, как создавать файлы .obj из MASM, если они содержат макрос, как указано выше, и как вызывать макросы из HLL, если мой код не работает.

1 Ответ

0 голосов
/ 01 марта 2019

Я считаю, что стандартная установка Visual C ++ также установит ml.exe и ml64.exe, которые выдают .obj файлы, совместимые с этой версией Visual C ++ link.exe.

Что выПосле того, как вы собрали файл сборки с ml /c asmfile.asm в файл .obj, в файле .c добавьте строку:

extern int intadd(DWORD int1, DWORD int2);

Скомпилируйте код .c с помощьюcl /c cfile.c, затем свяжите оба .obj файла в окончательный исполняемый файл с помощью link asmfile.obj cfile.obj /OUT:exefile.exe.

Обратите внимание, что ваша функция сборки недопустима, поскольку, как только вы пропустите оператор ret - вызов еговылетит ваша программа.

Если вы ищете информацию о том, как интегрировать файлы сборки в проект Visual C ++ в Visual Studio, этот вопрос содержит некоторую информацию.

...