With thanks to mistronr1 for posting the link in the win32asm forum, here is some later specifications for the new version of ML64.
http://msdn2.microsoft.com/library/xw102cyh(en-us,vs.80).aspx
It REAL DOES pay to pass feedback back to the development team as this is a more powerful version that has PROC and INVOKE built into it.
I can't find any clear statement that INVOKE is supported. The PROC page states that INVOKE can be used, but the linked INVOKE page does not contain '64' anywhere. There is a note that the PROC directive has been updated, but given the previous "excuses" for not supporting INVOKE, it seems likely that it would also require updating (unless, of course, they were just excuses :bg ), and there is no mention of this.
Michael,
I just clicked on the PROC link on the page for the following.
PROC
Marks start and end of a procedure block called label. The statements in the block can be called with the CALL instruction or INVOKE directive.
INVOKE
Calls the procedure at the address given by expression, passing the arguments on the stack or in registers according to the standard calling conventions of the language type.
INVOKE expression [[, arguments]]
Remarks
Each argument passed to the procedure may be an expression, a register pair, or an address expression (an expression preceded by ADDR).
Sounds great :U
At the end, they are convinced to support invoke :U
Here is a PDF set of specifications on the AMD64 processors.
http://www.amd.com/us-en/assets/content_type/DownloadableAssets/dwamd_AMD64_Porting_FAQ.pdf
Among the interesting things is that with the exclusion of x87 floating point code the sse maths capacity has been enhanced to ensure the accuracy so that al maths operations are done in 64 bit sse. I don't know if it handles the 80 bit fp with a replacement but as sse can handle 128 bit, this may be the case.
Not sure I like this. Proc and Invoke are useful, no doubt, but not too difficult to replace with pneumonics. .IF is what we really need. Any one up for handling Windows messages with CMP's and Jx's? :eek
I saw a piece of Hutch's code somewhere which used SWITCH and BREAK... think those might be macros. I need to learn more about that. :)
Hi Mark,
The Switch/Case emulation macros can be found in C:\masm32\macros\macros.asm
About message handling, JmpTable For the Win!
BuildTable proc
mov ecx,2047
@@:
mov [MessageTable+ecx*4],DEFPROC
sub ecx,1
jns @b
mov [MessageTable+WM_CLOSE*4],WMCLOSE
etc.etc.
endp
WndProc proc hwnd,uMsg,wParam,lParam
mov eax,uMsg
cmp eax,2048
jg DEFPROC
jmp [MessageTable+ecx*4]
WM*:
blahblahblah
ret or jmp return
DEFPROC:
invoke DefWindowProc,blahblahblah
ret
;return:
xor eax,eax
ret
endp
basic rundown
Glad they kept the features. :)