Errors with the yasm/msvc calling convention
Posted: Sat Oct 10, 2020 1:24 am
I have my OS and am currently working on paging. Hence I need some asm to write to cr3, but since MSVC doesn't allow inline assembly in x64 I have to use yasm to assemble my assembly 'support' file and then link it with my MSVC code.
However, the calling convention between the two does not work. I have tried calling a test function from my C file built with MSVC:
Declared as:
An in assembly:
However this does not work. I get a 0 returned when I pass in 324.
I'm using the microsoft x64 calling convention here as per the page on calling conventions but evidently it doesn't work.
Could anyone tell me what the problem here is? Do I need to specify flags when assembling under yasm?
Thank you very much in advance,
Heemogoblin
However, the calling convention between the two does not work. I have tried calling a test function from my C file built with MSVC:
Code: Select all
printInt(asm_test(324));
Code: Select all
extern uint32_t asm_test(uint32_t test);
Code: Select all
global asm_test
asm_test:
mov eax, dword [rcx]
add dword [eax], 200#
ret
I'm using the microsoft x64 calling convention here as per the page on calling conventions but evidently it doesn't work.
Could anyone tell me what the problem here is? Do I need to specify flags when assembling under yasm?
Thank you very much in advance,
Heemogoblin