Author Topic: UASM 2.51  (Read 52 times)


  • Member
  • ****
  • Posts: 816
    • Uasm
UASM 2.51
« on: Today at 01:14:16 AM »
Hi all,

I've updated the git repo, new branch v2.51 and the binaries are on the site for Windows 32bit and 64bit.

Not too much change this release, just rolling up what should have been in 2.50 +
1. Removed option zerolocals totally, it's silly and wasn't implemented fully.
2. Added a warning if win64 options automatically change the stackbase from rbp to rsp (that had caught me out once or twice)
3. Moved some more instructions into codegen v2
4. Some more cleanup and refactoring
5. A data declaration in a proc is now generated AFTER the prologue.. for some reason before hand due to the parser ordering it would put it before the prologue (This was at the request of Vid512).
6. The biggest one, with huge thanks to Nidud for his input, I've added in CV5 / CV8 debug support and followed Nidud's lead.. cmd line switches -Zi5 or -Zi8

I still have very little time for Uasm these days, but am trying to keep it from rotting.. If anyone has the time/will to contribute it would be hugely appreciated.



  • Member
  • *****
  • Posts: 1574
    • EditMasm
Re: UASM 2.51
« Reply #1 on: Today at 02:33:38 AM »
Trying to compile the source with VS 2019 I get
\UASM-master\x86macros.c(317,41): error C2065: 'LANG_REGCALL' : identificateur not declared
Any help ?
Fa is a musical note to play with CL


  • Member
  • ***
  • Posts: 466
Re: UASM 2.51
« Reply #2 on: Today at 03:06:16 AM »
When I try to download 2.51 from the link on the site, it gives me, you have to manually change the link to


  • Member
  • *****
  • Posts: 11137
  • Assembler is fun ;-)
    • MasmBasic
Re: UASM 2.51
« Reply #3 on: Today at 03:26:02 AM »
Thanks, John - so far it works fine with my fat sources, with one minor hickup in 22+42=64kLines of code:
Code: [Select]
include \masm32\include\

somedd1 dd 3839
somedd2 dd 3840

  movsx eax, sbyte ptr somedd1[1]
  print str$(eax), " for sbyte ptr somedd1[1]", 13, 10
  print str$(buffersize/256-255), " for buffersize/256-255", 13, 10
  .if sbyte ptr somedd1[1]<buffersize/256-255
print "dd1 ok", 13, 10
print "dd1 too big", 13, 10
  .if sbyte ptr somedd2[1]<buffersize/256-255
print "dd2 ok", 13, 10
print "dd2 too big", 13, 10

end start

This assembles fine with the June 2019 version (and Masm, AsmC) but throws an error in UAsm 2.51. I guess it should throw an error, given that buffersize/256-255 = -240 (which gets translated to +16 by Masm, so it most probably means I had a little bug in my code for the last 3 years or so - I expected a positive number). There might be scenarios where -240 is ok for a comparison.

Btw UAsm has become a little bit faster - congrats :thup:
« Last Edit: Today at 08:38:38 AM by jj2007 »


  • Member
  • ****
  • Posts: 816
    • Uasm
Re: UASM 2.51
« Reply #4 on: Today at 05:58:07 AM »
Doh... link fixed .. it's been so long since I did an update I've forgotten how haha ;)