Я реализовал простой макрос "intadd" в сборке, который добавляет два целых числа (QWORD).Код драйвера в C также использует QWORDS, который является typedef для uint32_t из stdint.h.Выходные данные всегда равны 7, независимо от аргументов.
asm.asm
intadd PROC x:DWORD, y:DWORD
mov eax, x
add eax, y
ret
intadd ENDP
END
Я также пытался переместить y в ebx, а затем добавить eax, ebx, но это приводит к тем же результатам.
C-Snippet
extern DWORD intadd(DWORD x, DWORD y);
printf("%i", intadd(1,1));
Нужно ли устанавливать флаг переноса или что-то?Я связываю файлы с
ml64 asm.asm /c && cl.exe cfile.c /EHsc /c &&
link asm.obj cfile.obj /out:exe.exe
Любая помощь приветствуется.