Hello developers,
I am trying to compile with HJWASM a large program previously compiled with JWASM with success.
I found an issue, which I hope will be clear with the following:
Source code:
"
option frame:auto
OPTION WIN64:6
.code
sub1 proc public arg1:ptr, arg2:ptr
ret
sub1 endp
sub2 proc public arg1:ptr, arg2:ptr
ret
sub2 endp
proc1 proc public FRAME uses xmm8 xmm9 arg1:qword, arg2:qword, arg3 :qword
mov r9, rcx
mov r10, rdx
mov r11, r8
INVOKE sub1, r10, r8
INVOKE sub2, r9, r11
mov rax, r9
ret
proc1 endp
end
"
Command line:
hjwasm64 -c -win64 -Zp8 test.asm
The above proc1 compiles with HJWASM to:
proc1:
000000013FBF16A4 push rbp
000000013FBF16A5 mov rbp,rsp
000000013FBF16A8 sub rsp,20h
000000013FBF16AC sub rsp,40h
000000013FBF16B0 vmovdqu xmmword ptr [rsp+40h],xmm8
000000013FBF16B6 vmovdqu xmmword ptr [rsp+50h],xmm9
000000013FBF16BC mov r9,rcx
000000013FBF16BF mov r10,rdx
000000013FBF16C2 mov r11,r8
000000013FBF16C5 mov rcx,r10
000000013FBF16C8 mov rdx,r8
000000013FBF16CB call sub1 (13FBF1690h)
000000013FBF16D0 mov rcx,r9
000000013FBF16D3 mov rdx,r11
000000013FBF16D6 call sub2 (13FBF169Ah)
000000013FBF16DB mov rax,r9
000000013FBF16DE vmovdqu xmm8,xmmword ptr [rsp+40h]
000000013FBF16E4 vmovdqu xmm9,xmmword ptr [rsp+50h]
000000013FBF16EA add rsp,40h
000000013FBF16EE pop rbp
000000013FBF16EF ret
and with JWASM to:
000000013F3016AC push rbp
000000013F3016AD mov rbp,rsp
000000013F3016B0 sub rsp,40h
000000013F3016B4 movdqa xmmword ptr [rsp+20h],xmm8
000000013F3016BB movdqa xmmword ptr [rsp+30h],xmm9
000000013F3016C2 mov r9,rcx
000000013F3016C5 mov r10,rdx
000000013F3016C8 mov r11,r8
000000013F3016CB mov rcx,r10
000000013F3016CE mov rdx,r8
000000013F3016D1 call sub1 (13F301690h)
000000013F3016D6 mov rcx,r9
000000013F3016D9 mov rdx,r11
000000013F3016DC call sub2 (13F30169Eh)
000000013F3016E1 mov rax,r9
000000013F3016E4 movdqa xmm8,xmmword ptr [rsp+20h]
000000013F3016EB movdqa xmm9,xmmword ptr [rsp+30h]
000000013F3016F2 add rsp,40h
000000013F3016F6 pop rbp
000000013F3016F7 ret
So the stack becomes corrupted with HJWASM.
AW27