The MASM Forum

64 bit assembler => UASM Assembler Development => Topic started by: johnsa on October 25, 2017, 12:19:06 AM

Title: UASM 2.43 pre-release
Post by: johnsa on October 25, 2017, 12:19:06 AM
www.terraspace.co.uk/uasm64.zip (http://www.terraspace.co.uk/uasm64.zip)

Please give it a test before we release.

Changes:
Add console colours for Windows, OSX and Linux.
Fix frame + frame:auto/noauto modes to match jwasm/masm.
Add argtype, argsize, argidx operators
Add additional 128bit record functionality for inline declaration.
Fix potential invoke register overwritten warnings not being detected.
Improve rbp frame generation compatibility with ml64.
Optimise AVX instruction encoding to use signed byte displacement where possible.
Title: Re: UASM 2.43 pre-release
Post by: jj2007 on October 25, 2017, 12:46:27 AM
Current MasmBasic will fail with UAsm because argsize was used internally in macros. Not a big problem, a replace all in the library source can help in this case, but it shows once more that adding new keywords may have implications for existing sources.
Title: Re: UASM 2.43 pre-release
Post by: johnsa on October 25, 2017, 01:05:35 AM

That is the problem with sensible names! :) You never know when someone has been "sensible" and created something with a logical name ... a bit like trying to find a free .com domain!

We can change it if it helps
Title: Re: UASM 2.43 pre-release
Post by: Biterider on October 25, 2017, 04:08:36 AM
Hi
Tested on 32 bit projects without problems and with only a few 64 bit projects. So good so far.  :t


Biterider
Title: Re: UASM 2.43 pre-release
Post by: jj2007 on October 25, 2017, 06:16:47 AM
Quote from: johnsa on October 25, 2017, 01:05:35 AMWe can change it if it helps

Don't worry, I'll have to update the library anyway soon, and argsize was never a documented public keyword. I also have 34 matches for argType and 16 for ArgType, but they are local, and that seems to work ::)

However, when used globally, it throws an error:

include \masm32\MasmBasic\MasmBasic.inc         ; download (http://masm32.com/board/index.php?topic=94.0)
OPTION NOKEYWORD:argtype       ; no effect
  Init
  argtype=1                     ; chokes with Error A2210: Syntax error: argtype
EndOfCode


Again, no problem.
Title: Re: UASM 2.43 pre-release
Post by: johnsa on October 26, 2017, 09:02:25 PM
New update:

www.terraspace.co.uk/uasm243_x64.zip (http://www.terraspace.co.uk/uasm243_x64.zip)
www.terraspace.co.uk/uasm243_x86.zip (http://www.terraspace.co.uk/uasm243_x86.zip)

Please test
Title: Re: UASM 2.43 pre-release
Post by: Biterider on October 26, 2017, 09:38:34 PM
Hi
What changed?
Regards, Biterider
Title: Re: UASM 2.43 pre-release
Post by: johnsa on October 26, 2017, 11:21:29 PM
Lots :)

1) SystemV invoke generation wasn't using avx instructions when loading ymm registers.
2) RBP based stack-frame layouts have been completely re-worked to provide a totally ML64 compatible default mode (no option win64, or option win64:0).
3) Some more changes to how frame auto and frame procedures are handled.
4) Found two optimisations in code generation for vmovdq, vmovdqu, vmovaps .. which allow short forms to be used when displacement fits in a signed byte, or uses a different encoding to avoid needing a 0 displacement.
5) New argidx, argsize, argtype operators.
6) Started some high level code changes to support MACHO64 output format.
7) Coloured console output on windows, linux and osx (red for errors, yellow for warnings.. helps to see whats going on in the console).
8) Fixed the situation with lea in invoke generation where the register overwrite warning wasn't being triggered.
Title: Re: UASM 2.43 pre-release
Post by: Biterider on October 27, 2017, 04:17:37 AM
Hi
I've tested my sources and did not detect any problem.  :t
Biterider