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.
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.
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
Hi
Tested on 32 bit projects without problems and with only a few 64 bit projects. So good so far. :t
Biterider
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
EndOfCodeAgain, no problem.
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
Hi
What changed?
Regards, Biterider
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.
Hi
I've tested my sources and did not detect any problem. :t
Biterider