News:

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

Main Menu

GoAsm 0.59 and GoLink 1.0.1.0 updates

Started by wjr, November 29, 2014, 11:30:23 AM

Previous topic - Next topic

wjr

GoAsm – version 0.59 now available here http://www.godevtool.com/Goasm.zip with the following changes:

  • disallowed LOCALFREE for x86 and x64 modes
  • added #if #elseif #elif conditional operators && and || (simple left to right precedence)
  • fixed #if NOT Number or #if ~Number
  • fixed #if SYMBOL to do conditional assembly based upon the value of SYMBOL
  • fixed problem with two strings and no comma between '...''...'
  • fixed non-FRAME Jcc >LabelB.NamedReusableLabel used within scope of LabelA:
  • modified internal memory usage for unscoped re-usable labels, forward references, and memory references
  • other internal modifications for slightly quicker processing
  • removed support for ENDSSTRUC and ENDSSTRUCT (with double S)

GoAsm - version 0.59.0.1 now up with the following adjustments:

  • fixed MACRO UNION LOCALEQU not being processed
  • fixed INVOKE not doing additional parameters after line continuation
  • fixed symbol definitions with no space in front of =


GoLink – version 1.0.1.0 now available here http://www.godevtool.com/Golink.zip with the following changes:

  • input file(s) reserved memory increased from 96MB to 512MB
  • output file reserved memory varies from 8MB to 512MB depending upon the input size actually used

For the GoAsm string fix, there was an undocumented partial carry over from GoRC (which retains a doubled-up quote as that quote within a string). The intended GoAsm support for the leading and trailing case is now documented.

As for quicker processing, I know, only by milliseconds. Still, without include files and primarily use of unscoped re-usable labels within procedures, possibly up to ~26% quicker. Overall most likely closer to ~1% for others, possibly more for smaller programs with up to ~15% quicker going through include files.

Yuri

Quote from: wjr on November 29, 2014, 11:30:23 AM

  • added #if #elseif #elif conditional operators && and || (simple left to right precedence)

Thanks, Wayne, that was my request. Now I can simplify quite a bit of code. :icon_cool:

FlySky

Great progress on GoAsm wjr,

not sure but I experience a problem when compiling an older project:

DATA? SECTION
;global used variables
context               CONTEXT <>
//pbi                  PROCESS_BASIC_INFORMATION <>
winversion               OSVERSIONINFOEX <>

The error comes here when compiling the source --> at the winversion line:

unexpected material <>

I am calling the function like this:
mov D[winversion.dwOSVersionInfoSize], sizeof OSVERSIONINFOEX
invoke GetVersionEx, offset winversion

using the earlier version of GoAsm 0.58.0.4 it compiles just fine, maybe you can look into it.

rsala

GoAsm 0.59 IMPORTANT ISSUES

Hi Wayne,

There are some important issues I have detected in GoAsm 0.59 that did not happen in previous versions:

TestMacro1(%1) MACRO
   Mov Eax, %1
   Ret
ENDM

GoAsm fires the following error:

Unknown mnemonic, instruction, redefinition or directive:-
TestMacro1(%1) Macro


You can solve this issue by Including the macro in a section (but that should not be necessary):

.Const

TestMacro1(%1) MACRO
   Mov Eax, %1
   Ret
ENDM

But then GoAsm complains again with:

Use square brackets to address memory, ADDR or OFFSET to get address:-
Mov Eax, %1


This new issue can be solved by using brackets:

.Const

TestMacro1(%1) MACRO
   Mov Eax, [%1]
   Ret
ENDM

But then if another macro is defined:

.Const

TestMacro1(%1) MACRO
   Mov Eax, [%1]
   Ret
ENDM

TestMacro2(%1) MACRO
   Mov Eax, [%1]
   Ret
ENDM

GoAsm fires the following error:

Label of this name already declared:-
%1) Macro


It seems that arguments name cannot be repited, which has no sense for macros.

Finally, the following splitted line:

Invoke CreateFile, Addr ASCIIName, GENERIC_READ, 0, \
                NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL

Gives the error:

Expecting a parameter after comma in INVOKE
Defined in Line 312 of the include file winnt.inc as:
80000000h


The "\" char does not do its job and you cannot have splitted lines. If you put all line together (unsplitted), then it works.

All this did not happen in previous versions and it can be a real mess for all projects coded before this last version of GoAsm.

I attach a test code where you can see all errors commented above (hope it can help).

Regards,

Ramon
EC coder

wjr

Sorry about that, despite efforts at avoiding errors with flag changes and program flow rearranging, a few still surprisingly slipped through. At least they were quick and easy to find and fix. GoAsm version 0.59.0.1 now available.

FlySky

Wayne,

Thanks for all your efforts, 0.59.0.1 works like a charm!!.

rsala

Wayne,

Thank you very much!

Version 0.59.0.1 works fine.
EC coder

shankle

Hi Wjr,
I guess you know the url for GoAsm and GoLink doesn't work.
Could you post one that does?
Thank you.

wjr

Thanks, I didn't, but I do now as does Jeremy - things should be back up as usual soon, but it will take a few days...

Gunther

Quote from: wjr on January 07, 2015, 08:02:11 AM
Thanks, I didn't, but I do now as does Jeremy - things should be back up as usual soon, but it will take a few days...

That's good news. I've used GoLink for some projects with nasm/yasm. It's a good linker. Let us know about the necessary update.

Gunther
You have to know the facts before you can distort them.

wjr


SHDA


Gunther

The download works for me now. I've downloaded both (GoAsm and GoLink) and they are working well.

Gunther
You have to know the facts before you can distort them.