Author Topic: UASM 2.43 pre-release  (Read 190 times)

johnsa

  • Member
  • ****
  • Posts: 549
    • Uasm
UASM 2.43 pre-release
« on: October 25, 2017, 12:19:06 AM »
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

  • Member
  • *****
  • Posts: 7628
  • Assembler is fun ;-)
    • MasmBasic
Re: UASM 2.43 pre-release
« Reply #1 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.

johnsa

  • Member
  • ****
  • Posts: 549
    • Uasm
Re: UASM 2.43 pre-release
« Reply #2 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

Biterider

  • Member
  • **
  • Posts: 123
  • ObjAsm32
    • ObjAsm32
Re: UASM 2.43 pre-release
« Reply #3 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

jj2007

  • Member
  • *****
  • Posts: 7628
  • Assembler is fun ;-)
    • MasmBasic
Re: UASM 2.43 pre-release
« Reply #4 on: October 25, 2017, 06:16:47 AM »
We 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.

johnsa

  • Member
  • ****
  • Posts: 549
    • Uasm
Re: UASM 2.43 pre-release
« Reply #5 on: October 26, 2017, 09:02:25 PM »

Biterider

  • Member
  • **
  • Posts: 123
  • ObjAsm32
    • ObjAsm32
Re: UASM 2.43 pre-release
« Reply #6 on: October 26, 2017, 09:38:34 PM »
Hi
What changed?
Regards, Biterider

johnsa

  • Member
  • ****
  • Posts: 549
    • Uasm
Re: UASM 2.43 pre-release
« Reply #7 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.

Biterider

  • Member
  • **
  • Posts: 123
  • ObjAsm32
    • ObjAsm32
Re: UASM 2.43 pre-release
« Reply #8 on: October 27, 2017, 04:17:37 AM »
Hi
I've tested my sources and did not detect any problem.  :t
Biterider