Author Topic: GoAsm 0.59 and GoLink 1.0.1.0 updates  (Read 6571 times)

wjr

  • Member
  • **
  • Posts: 217
    • WJR's website
GoAsm 0.59 and GoLink 1.0.1.0 updates
« on: November 29, 2014, 11:30:23 AM »
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.
« Last Edit: December 07, 2014, 06:01:52 PM by wjr »

Yuri

  • Member
  • **
  • Posts: 175
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #1 on: November 30, 2014, 10:50:35 PM »
  • 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

  • Regular Member
  • *
  • Posts: 41
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #2 on: December 06, 2014, 11:50:57 PM »
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

  • Member
  • ***
  • Posts: 318
    • Easy Code
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #3 on: December 07, 2014, 09:29:59 AM »
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

  • Member
  • **
  • Posts: 217
    • WJR's website
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #4 on: December 07, 2014, 06:16:19 PM »
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

  • Regular Member
  • *
  • Posts: 41
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #5 on: December 07, 2014, 07:16:43 PM »
Wayne,

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

rsala

  • Member
  • ***
  • Posts: 318
    • Easy Code
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #6 on: December 07, 2014, 07:20:26 PM »
Wayne,

Thank you very much!

Version 0.59.0.1 works fine.
EC coder

shankle

  • Member
  • ****
  • Posts: 857
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #7 on: January 07, 2015, 02:41:03 AM »
Hi Wjr,
I guess you know the url for GoAsm and GoLink doesn't work.
Could you post one that does?
Thank you.

wjr

  • Member
  • **
  • Posts: 217
    • WJR's website
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #8 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...

Gunther

  • Member
  • *****
  • Posts: 3585
  • Forgive your enemies, but never forget their names
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #9 on: January 07, 2015, 08:49:56 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
Get your facts first, and then you can distort them.

wjr

  • Member
  • **
  • Posts: 217
    • WJR's website
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #10 on: January 09, 2015, 04:51:40 PM »
The website is back up...

SHDA

  • Guest
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #11 on: January 09, 2015, 10:47:02 PM »
FINALLY! I could dload them.

Gunther

  • Member
  • *****
  • Posts: 3585
  • Forgive your enemies, but never forget their names
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #12 on: January 09, 2015, 11:34:14 PM »
The download works for me now. I've downloaded both (GoAsm and GoLink) and they are working well.

Gunther
Get your facts first, and then you can distort them.

shankle

  • Member
  • ****
  • Posts: 857
Re: GoAsm 0.59 and GoLink 1.0.1.0 updates
« Reply #13 on: January 10, 2015, 12:00:40 AM »
Thanks WJR :biggrin: