goasm assembler manual by jeremy gordon

Upload: leovalen

Post on 14-Apr-2018

224 views

Category:

Documents


2 download

TRANSCRIPT

  • 7/30/2019 GoAsm Assembler Manual by Jeremy Gordon

    1/2

    31/03/2013 GoAsm assembler Manual by Jeremy Gordon

    www.godevtool.com/GolinkFrame.htm

    Download the latest version of GoLink, and this documentation

    http://www.godevtool.com/Golink.ziphttp://www.godevtool.com/index.htm
  • 7/30/2019 GoAsm Assembler Manual by Jeremy Gordon

    2/2

    31/03/2013 GoAsm assembler Manual by Jeremy Gordon

    www.godevtool.com/GolinkFrame.htm

    .

    require changing are called base relocations. Clearly th is process

    takes time during loading and you can help to speed up the loading

    process by specifying your own base address for your DLLs. This

    will ensure that the DLL will actually be loaded at the expected base

    address. I would s uggest us ing the area 10000000h to 60000000h

    (the sys tem itself tends to use the area outside these values).

    Ensure your value is rounded up to a 64K boundary. You can use

    GoBug (inspect/search promenade memory/promenade) to check

    where the operating system is loading your DLLs. It is interesting

    to no te that the System DLLs themselves us e this s taggered base

    address system. Usually this is in the memory area of 80000000h

    and above.

    GoLink inserts base relocation information in the executable only if

    you use the /base xxxx switch, the /dynamicbase switch, or if you

    are making a DLL or a driver.

    /console = make a console executable.This sets a flag in the executable telling the Windows loader that

    the executable will not rely on the Windows GUI (Graphic User

    Interface). In practice this means that the executable will not be

    given a message queue and that it will not require memory to be setaside for creating windows and the resulting device contexts. On

    the other hand the executable will be automatically provided with a

    "console" by the loader, allowing input from and output to the

    various devices connected to the computer. Because of the lower

    overhead, console applications tend to load and exit more quickly

    than graphics applications.

    /debug coff = add embedded coff debug information to the final

    executable .GoLink's debug output is tailored to what is required by ass embler

    programmers. Basically every symbol known to the linker is put inthe debug information together with its value. This can then be

    used to bring the program to life under debug control, us ing GoBug

    or other debuggers which accept coff debug information.

    /debug dbg

    = place coff debug information in a dbg file .If this switch is used , GoLink places the coff debug information in a

    file in .dbg format in an " exe" or "dll" sub-folder depending on

    what type of executable is being made. The sub-folder is used to

    ensure that there is no mix-up between the main EXE and its DLLs.

    So for example MyProg.exe will have its debug information placed

    in exe\MyProg.dbg and MyProg.dll will have its debug information

    placed in dll\MyProg.dbg.

    /dll

    = make a DLL.GoLink makes a DLL if either this switch is used or if using the /fo

    switch you s pecify an output file with the extens ion DLL. If neither

    of thes e apply and you are not making a driver, GoLink makes an

    EXE.

    GoLink inserts base relocation information in the executable only if

    you use the /base xxxx switch, the /dynamicbase switch, or if you