Hi
Today I stumped on a strange behaviour of "equ". The code looks like
.xmm
option casemap:none
option dotname
option frame:auto
option win64:8
option stackbase:rsp
.code
WinTest_Startup proc Arg1:QWORD
ret
WinTest_Startup endp
WinStart equ WinTest_Startup
start proc
invoke WinTest_Startup, 123
invoke WinStart, 123
ret
start endp
end start
and compiled with uasm64 2.49.0.2:
00007FF799371001 48 83 EC 28 sub rsp,28h
00007FF799371005 48 C7 C1 7B 00 00 00 mov rcx,7Bh
00007FF79937100C E8 EF FF FF FF call 00007FF799371000
00007FF799371011 6A 7B push 7Bh
00007FF799371013 E8 E8 FF FF FF call 00007FF799371000
00007FF799371018 48 83 C4 28 add rsp,28h
00007FF79937101C C3 ret
You can see, that the second invoke can be performed without problems, but uasm seems to think that a different calling convention should be used.
If we replace the "equ" directive with "textequ" or "equ <WinTest_Startup>", everthing will work again.
I think we have a "feature" here that needs some attention.
Biterider