News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

UASM 2.43 pre-release

Started by johnsa, October 25, 2017, 12:19:06 AM

Previous topic - Next topic

johnsa

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.

jj2007

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.

johnsa


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

Biterider

Hi
Tested on 32 bit projects without problems and with only a few 64 bit projects. So good so far.  :t


Biterider

jj2007

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
OPTION NOKEYWORD:argtype       ; no effect
  Init
  argtype=1                     ; chokes with Error A2210: Syntax error: argtype
EndOfCode


Again, no problem.


Biterider

Hi
What changed?
Regards, Biterider

johnsa

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.

Biterider

Hi
I've tested my sources and did not detect any problem.  :t
Biterider