In my main function in C++ I pass 6 int arguments to a subroutine written in assembly x64. The first four arguments are in registers but I'm struggling with getting the last two from stack. Here's my code:
.code
myProc1 proc a:DWORD, b:DWORD, c:DWORD, d:DWORD, e:DWORD, f:DWORD
push rbp
mov rbp, rsp
sub rsp, 32 ; allocate shadow space 'padding'
sub rsp, 16 ; allocate space for fifth and sixth argument
mov DWORD PTR [rsp + 20h], e ; push fifth argument
mov DWORD PTR [rsp + 24h], f ; push sixth argument
mov rsp, rbp
pop rbp
ret
myProc1 endp
end
When I try to push e i f on stack I'm getting "invalid instruction operands". And I just don't know how else to try to push dword on stack.
I've tried using push and pop on qwords but then e and f value isn't as it should be. I'm guessing it's because int and qword are different sizes.