News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Question about GoLink

Started by eilenbeb, January 10, 2006, 01:14:53 AM

Previous topic - Next topic

eilenbeb

hmm...
lib files abolished...
GoLink looks in existing (system dll?) files for linking info...

what effect would it have, then,  to assemble and link AMD64 code on win98?
i see in the sdk include files that there are now MANY conditionals regarding winxp vs 2000 etc.
do you think this GoLink feature could cause problems with different dll versions?

btw, spent hours trying to get ml64 to assemble some do-nothing code.  took mere minutes to write and assemble using GoAsm!!!
thanks, jorgon!

jorgon

eilenbeb

In the final exe, the linker lists the APIs and groups them according to which dll contains them.  In particular, no addresses for the APIs are kept in the exe.  This is normal for linkers, not just GoLink.  At load-time the addresses are inserted into the loaded image of the exe, by the system.

This means that, at link-time, the only information required by the linker is which dll holds which APIs. 

The different versions of Windows do not move APIs from one dll to another. They stay in the same dll.  This ensures that executables which have already been made can still run on later versions (all other things being equal). 

However, in later versions new APIs are added which may not be in the dlls in earlier versions.

So, there is no problem making an executable with GoLink on a machine containing an earlier version of Windows, as long as you only call APIs in that version.  If you call an API which is not in that version, the linker will tell you it can't find the API. 

If this happens there are four ways round this:-


  • Specify the dll using for example, INVOKE SystemDll:NewAPI
  • Put the newer version of the dll in a unique folder and specify this as the path to the dll in GoLink's command file
  • Put the newer version of the dll in the same folder as GoLink: it will find this first (see "search order" in the GoLink help file)
  • Make the executable on a machine loaded with the later version of the system dlls

Thanks for your report on GoAsm for 64.  It seems to be working well.
Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)

eilenbeb

tx for the reply.  all sounds good to me.
think i'm gonna dump the ms tools for a while.

more go-64 posts coming soon... heh
laters