The MASM Forum Archive 2004 to 2012

General Forums => The Workshop => Topic started by: hutch-- on April 19, 2005, 02:59:31 AM

Title: New specs for ML64
Post by: hutch-- on April 19, 2005, 02:59:31 AM
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.
Title: Re: New specs for ML64
Post by: MichaelW on April 19, 2005, 03:32:20 AM
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.
Title: Re: New specs for ML64
Post by: hutch-- on April 19, 2005, 05:23:00 AM
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).
Title: Re: New specs for ML64
Post by: Ghirai on April 19, 2005, 07:18:27 AM
Sounds great :U
Title: Re: New specs for ML64
Post by: Vortex on April 19, 2005, 09:45:42 AM
At the end, they are convinced to support invoke  :U
Title: Re: New specs for ML64
Post by: hutch-- on April 21, 2005, 12:01:36 PM
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.
Title: Re: New specs for ML64
Post by: Bieb on April 21, 2005, 01:36:10 PM
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
Title: Re: New specs for ML64
Post by: Mark Jones on April 21, 2005, 02:44:34 PM
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. :)
Title: Re: New specs for ML64
Post by: Vortex on May 01, 2005, 02:46:51 PM
Hi Mark,

The Switch/Case emulation macros can be found in C:\masm32\macros\macros.asm
Title: Re: New specs for ML64
Post by: Infro_X on May 26, 2005, 07:03:18 PM
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. :)