Go Tools for Windows (assembler, resource compiler, linker, debugger and information)

Web Name: Go Tools for Windows (assembler, resource compiler, linker, debugger and information)

WebSite: http://www.godevtool.com

ID:274960

Keywords:

Windows,assembler,for,Go

Description:


The Go tools for
Windows + Assembler
Easy Code Visual IDE ECGo.zip (essential file for the IDE) Bill Aitken's tutorials for using GoAsm and the IDE The "Go" Tools


by Jeremy Gordon in collaboration with Wayne Radburn
"Go Tools" Forum in the MASM forum Third party help files Robert Cordonnier's excellent manual in French
Vol 1 - GoAsm
"GoDevTool Memento" help file by Patrick Ruiz

"Go" tools also does

If you are interested in 32-bit or 64-bit programming for Windows,you will find everything you need here including an Assembler, a Resource Compiler, Linker, Symbolic Debugger, and links to Integrated Development Environments (IDEs), a Help Compiler, Information about Windows and Header Files (include files).There are also "Go" tutorials and sample code, Third party tutorials and sample code, a Demonstration program, and other Links.
Also see the enhanced Unicode support in the "Go" toolsand 64-bit programming.

Windows+assembler is becoming more and more popular. Here you can usea low level language (assembler) together with a very high level language(the Windows API) - a perfect combination!

TOOLS

Assembler - A free assembler (GoAsm.exe), which produces COFF object filesready to be given to a linker to create the final executable. My aim herehas been to make an assembler with clean and obvious syntax, which is veryquick, and which always tries to produce the smallest code. GoAsm alsohas some useful extensions to make programming for Windows easier. Ithas enhanced support for making Unicode programs and can produce programsfor both Win32 and Win64(x64) platforms (see 64-bit programming).
View the GoAsm manual
Download GoAsm version 0.61.0.1 (with documentation 362K)




Resource Compiler - A free resource compiler (GoRC.exe), which produces RES filesfrom RC files, or OBJ files from RC or RES files, together with documentation.
View the GoRC manual
Download GoRC version 1.0.3.0 (with documentation 67K)(this is a 32/64-bit version: see 64-bit programming)




Linker - A free linker (GoLink.exe), which takes COFF object files and a Res file and creates EXE or DLL executables able to run under Windows Win32 or Win64(x64) see 64-bit programming. This is a full featured but "reduced baggage" linker which keeps files to a minimum. You do not need Lib files to identify what functions reside in the DLLs. Instead GoLink looks inside the DLLs themselves. Used with GoAsm, this linker can report on redundant data and code in your programs. It also allows use of Unicode filenames and labels (exports and imports).
View the GoLink manual
Download GoLink version 1.0.4.1 (with documentation 49K)



Debugger - "GoBug" - A free Win32 symbolic debugger for assembler programmers, together with "Testbug" its accompanying testprogram and Win32+assembler demo program. It is itself written entirely in assembler, using my assembler GoAsm and my linker GoLink.
Go to the GoBug site for more details and for free download here.



IDEs - Integrated Development Environments -Here are some IDEs which work with the "Go" tools. Please let me know if I havemissed any:-
Easy Code for GoAsm.
The excellent visual assembler IDE for Windows written byRamon Sala.
Download ECGo.zip - package for use with Easy Codecontaining the latest versions of the "Go" tools - 466K.
Bill Aitken's tutorials for using GoAsm and the IDE
RadAsm IDE forum
Another excellent visual assembler IDE for Windows fromKetil Olsen.



Help Workshop - All you need (free from Microsoft) to create the new compiled html help files
http://msdn2.microsoft.com/en-us/library/ms670169.aspx


INFORMATION about WINDOWS

Windows 32/64 - The whole SDK (Software Development Kit)can be downloaded free from Microsoft.
It's massive so make sure youhave a cheap and fast internet connection! Use the link below to getinto the Microsoft MSDN site, then click "downloads" then "SDK downloads",then you may have to search for "Platform SDK", and then click on "ReleaseDate" to sort the results so you can see the latest SDK.This sequence changes slightly as Microsoft changes its download site.The "Windows Server 2003 R2 Platform SDK" will contain everything you needalthough there are now also the Vista SDK's and an SDK for the Windows Server2008 pre-release if you want to be very up to date.To a limited extent you can choose what to download and what not to download.You will need at least the "documentation" which gives details of the WindowsAPIs, but it is a good idea also to download the header files.
Good luck!
Go to the Microsoft MSDN site


HEADER FILES (include files)

Header files - contain the constant values, structuresand parameters you need to know about when you call a Windows API.
Many programmers "include" them directly in their source code, so that theconstant values and structures can be referred to by name. Typically these fileshave ".h" or ".inc" extensions.
There are various source for such files.The recommended way is to use the header files prepared by the GoAsm Header Project from "Donkey's Stable", whichare now available from here.You can use the header files from the Windows SDK, and then use Wayne J Radburn'sxlatHinc utility to convert those headerfiles into include files for direct use by GoAsm.You can use Bryant Keller's header files, including Windows constants, structures,procedures and some macros. They are available fromhere.

"GO" TUTORIALS and SAMPLE CODE


These tutorials are from
the GoBug manual
the Testbug manual or
the GoAsm manual

Beginners
Quick start to .. writing a simple Windows program
Step-by-step guide to making simple Windows programs.
For those new to programming
The basic build process and the files you use.
For those new to assembly language
An introduction to the various assembler instructions (mnemonics) and what they do.
For those new to Windows
A basic description of what Windows does and how it works.
For those new to symbolic debugging
What debugging is and how to use it to find errors in your programs.

Simple Windows console program
Source code for a program writing "Hello World" to the console.
Simple Windows GUI program
Source code for a program writing "Hello World" to a window.
Simple Windows GUI program
Source code for a program writing "Hello World" to a window, butdemonstrating automated stack frames, structures, INVOKE, locally scopedlabels and redefinitions (macros).
Simple Dialog program
Source code for a program creating a dialog, and showing various ways of writingto it.

Understand bits, binary and bytes
Understand hex numbers
Understand finite, negative, signed and two's complement numbers
Understand registers
Understand the stack - Part 1

FAQ"When I click on the GoAsm or GoLink or GoRC icon something just flashes on the screen but nothing else happens".Intermediate
Some programming hints and tips
Size of code - keep it compact!

Understand flags and conditional jumps
Real-time conditional jump test (Testbug)
Real-time flag test (Testbug)
Understand reverse storage
Understand the stack - Part 2

Use of NEG and NOT
Use of BT (and variants) and BSWAP
Use of REP SCASB
Types of JMPs & CALLs to unique labels

Standardized window and dialog procedure
Optimising the loop instruction
Optimising REP STOS MOVS and STAS
Alignment of oft-called functions
Alignment of memory reads, writes and compares

Writing a 32-bit number in hex
Writing a 32-bit number in ascii
Writing a 64-bit number in ascii
Dividing a 64-bit number
Data in the code section - effect on speed
Using VirtualAlloc and HeapCreate
HeapCreate v VirtualAlloc, comparing speed
Drawing text to screen using Windows

What Dlls are and why they are useful
Dll loading, memory, stack and threads
Calling Dlls with no arguments
Calling Dlls with arguments via the stack
Dll sending data to the calling exe

Do nothing Linux program by V.KrishnakumarAdvanced
Conditional jump branch hints
Use of IDIV
Use of IMUL
BCD coding: AAA and DAA

Using the FPU
Using the MMX registers
Using the 3DNow! instructions
Using the XMM integer instructions
Using the XMM SSE instructions
Using the XMM SSE2 instructions
SIMD floating point control

Dlls: Start-up code and run-time link
Dlls: Exporting data pointers
Dll using a function in the calling exe
Calling a Dll function by ordinal using GetProcAddress
Calling a Dll function directly by ordinal
Calling a Dll function by name-load
Testing who called Dll start-up code
Addressing arguments using ebp
Addressing arguments using esp
Addressing local data in home-made stack frames
Ways of saving return address in stack frames

Making temporary on-screen notices
Clipping - control using the device context
Clipping - control using other methods
Using different languages in resources
Different types of window procedures
Recursion in window procedures
Simulating a dialog
Making and debugging multi-threaded programs
Causing and debugging exceptions
Messages around the system

Writing 64-bit programs
Hello 64World 1
a simple 64-bit console program
Hello 64World 2
a simple 64-bit windows program
Hello 64World 3
switchable 32-bit or 64-bit windows program

Writing Unicode programs
Hello Unicode 1A simple program with a Unicode UTF-8 source script, which draws Unicodecharacters to the console and which demonstrates how to get the strings in thecorrect format using the natural format of the source script, the STRINGSdirective and the A" and L" overrides.
Hello Unicode 2A Unicode UTF-8 source script, which draws Unicode characters in a dialogmade using a template in data and also in a message box. It demonstrates theuse of Unicode strings in data.
Hello Unicode 3A Unicode UTF-8 source script, which draws Unicode characters using TextOutW,and also demonstrates Unicode/ANSI switching using the Microsoft Layer forUnicode.
Run Time LoadingDemonstrates how to use run-time loading in large application runningon both W9x/ME and NT/2000/XP/Vista/7/8 and using both ANSI and Unicode APIs.
Demonstrations of what W9x/ME and NT/2000/XP/Vista/7/8 can do to draw non-Roman characters

Structured Exception Handling (view)
Structured Exception Handling (download 56K)This is an analysis of Structured Exception Handling in Win32 from an assemblerviewpoint, with demo programs and source code examples. It includestwo samples. One is a simple example demonstrating both final and per-threadhandlers. The second is more complex, demonstrating exception handling in detail.Debugging
For those new to symbolic debugging
Debugging: what, when and how (GoBug)
Around GoBug
Using GoBug
Getting system and debuggee information
Testing GoBug using Testbug - various tests
View the complete GoBug manual
The "RSDS" or "DS" pdb symbol file format

Third party Tutorials and GoAsm sample code


There are several excellent guides to assembler programming and windowsprogramming on the internet, but if these are based on source code forother assemblers or for "C", they can be confusing for the beginner whowants to use the "Go" tools. For this reason I only list here tutorialsand sample code specifically written for the "Go" tools. If you want tolook at the other resources you can use my linkspage.


Wayne J. Radburn's assembler page

Wayne was the first to publishassembler and windows skeleton code and all his examples are now inGoAsm syntax but with a MASM flavour. Here you can get:Bare Bones skeleton - a simple window with a menu and help/about dialog box.In the Flesh - adds a view window, removeable toolbar, and status bar. Ithas additional file menu commands which open and close a memory mapped file.Alive and Kicking - uses a split window, a treeview and view windowsand a window for selecting a font. It also uses the registry to save settings.See also Wayne's xlatHinc which converts a Windows "h" file to an "inc"file for use with the "Go" tools.

Vortex has kindly provided this sample code:-Simple dialog box created using a resource file VortexDlg1.zipHow to use INCBIN directly to import a dialog template made using res2bin into GoAsm source codeVortexIncbin1.zipHow to use INCBIN directly to import a dialog template from a res file into GoAsm source codeVortexIncbin2.zip

"GoDevTool Memento" by Patrick Ruiz - useful aide-memoire for the "Go" tools as a help file.

please contact me if you would like your work to be added to this list

DEMONSTRATION PROGRAM


Testbug.exe and its associatedhelp files - this contains Win32+assembler demonstrations and samples,speed tests, and practice at debugging, particularly with the GoBugdebugger.
View the Testbug manual
Download Testbug Version 1.03 (414K)
Here is what you can find in Testbug ..
Speed tests
Addressing stack in various ways
LOOP and REP
Aligning code and data
Using branch hints
FPU v CPU @ 64 bits
Addressing data in code section
Various ways of writing numbers
Comparing the Win32 memory APIs
Comparing Win32 text APIs
Use of Win32
Addressing stack in various ways
Various tests and demos using DLLs
Ways to put temporary notices on screen
Clipping regions in windows
How to use the memory APIs
How to use different language resources
How to draw non-Roman characters under W9x/ME
How to draw Unicode characters
Different types of WndProc to use
Simulating a dialog using ordinary window
Use of GoBug
Practice conditional jumps
How API errors are shown
Recursion in WndProcs
Passing arguments on the stack
Using EBP as spare register
Local data and stack frames
When waiting return from a call
Infinite loops to break out of
Debugging multi-threaded applications
Breaking on various exceptions
Displaying output string
Watching and logging messages
Use of Mnemonics
Flag demonstration
Use of IDIV
Use of IMUL
Use of NEG and NOT
Size of code using various mnemonics
Using the bit control mnemonics
Use of REP SCAS and variants
Use of the BCD mnemonics
JMPs and CALLs to unique labels
Using the Floating Point Unit
Using the MMX registers
Using the 3DNow! instructions
Using the XMM registers
SSE and SSE2 instructions
SIMD floating point control
Use the debugger as a hex calculator

There are plenty of samples of asm code for Win32 in thelinks!


64-bit programming using the "Go" tools


GoAsm, GoLink and GoRC are now capable of producing 64-bit programs which can be run on X64 (x86-64) processors (such as the AMD64 and those using EM64T) running under Windows x64. The same versions of these tools work for both 32-bit or 64-bit assembly.

All the 64-bit capable versions of these tools are beta versions as follows:-
GoAsm 32/64-bit assembler (version 0.61.0.1 with documentation 362K)
GoRC 32/64-bit resource compiler (version 1.0.3.0 67K)
GoLink 32/64-bit linker (version 1.0.4.1 with documentation 49K)

Despite the differences between the 64-bit processors and their 32-bit counterparts, and between the x64 (Win64) operating system and Win32, using GoAsm to write 64-bit Windows programs is just as easy as it was in Win32.

In fact, you can readily use the same source code to create executables for both platforms if you use GoAsm's enhanced instructions ARG and INVOKE and FRAME...ENDF, and conditional assembly for data sizes and structures. Then specify /x64 in the command line to make a 64-bit object file and /x86 to make a 32-bit one. GoLink automatically senses the type of object file to make the correct executable.See writing 64-bit programs for details.

AdaptAsm is part of the GoAsm package and helps towards converting your existing 32-bit codeto 64-bit code, changing registers automatically and changing PUSH/CALL combinations toARG/INVOKE as required. It uses Leland M George's clever javascript file ApiParamCount.jswhich can take a Microsoft header file and create a list of the APIs and their parameter counts.You can download this file separately here.See writing 64-bit programs for details of how to use AdaptAsmin this way.

Here is some sample code:-
Hello 64World 1 a simple 64-bit console program
Hello 64World 2 a simple 64-bit windows program
Hello 64World 3 switchable 32-bit or 64-bit windows program

All bug reports would be appreciated.The tools do not yet offer full support for 64-bit structured exception handling. Thisis in progress but I would welcome any ideas for an appropriate syntax to use.

GoBug will be revised to enable it to debug 64-bit applications.

UNICODE


Summary of Unicode support in the "Go" tools


GoAsmInput file formats supported:-
ANSI, Unicode UTF-8 with BOM and UTF-16LE with BOMOutput:-
Output to the console will be in Unicode if permitted by thesystem; list file and any file to receive redirected output will be in the sameformat as the first input file.Unicode can be used in:-
filenames in include files and raw data files;
filenames in input and output files via the console (command line);
defined words in the command line;
defined words in source or include files (equates, structs and macros);
comments;
data labels (permitting access to data using Unicode);
code labels (permitting calls to functions usingUnicode names, imports and exports to other executables);
strings (see below).
Declaring strings in data:-DB "..."- (default action) in an ANSI file, no conversion;
- in a Unicode file, put in data in UTF-16 format;
and to override the default action:-STRINGS UNICODE- strings always to be in UTF-16 format for the rest of the fileSTRINGS ANSI- strings always to be in ANSI format for the rest of the fileand irrespective of the STRINGS directive:-DUS "....",0Dh,0Ah,0- declare sequence in data in UTF-16 format (string and control characters)DB L"..."- declare string in data in UTF-16 formatDW L"..."- declare string in data in UTF-16 formatDB 8"..."- declare string in data in UTF-8 formatDB A"..."- declare string in data in ANSI formatPushing pointers to null terminated strings in data:-PUSH "....."- (default action) in ANSI file no conversion;
- in a Unicode file, push pointer to null-terminated Unicode string in data in UTF-16 format
and to override the default action:-STRINGS UNICODE- push strings to be in UTF-16 format for the rest of the fileSTRINGS ANSI- push strings to be in ANSI format for the rest of the fileand irrespective of the STRINGS directive:-PUSH L"....."- push pointer to null terminated string in UTF-16 formatPUSH 8"....."- push pointer to null terminated string in UTF-8 formatPUSH A"....."- push pointer to null terminated string in ANSI formatQuoted immediates:-MOV EAX,'a'- (default action) in ANSI file no conversion(put into EAX the character value of 'a' in the current codepage);
- in a Unicode file, put Unicode character value for "a" into EAX;
and to override the default action:-STRINGS UNICODE- use Unicode character values for the rest of the fileSTRINGS ANSI- use ANSI character values for the rest of the fileand irrespective of the STRINGS directive:-MOV EAX,L'a'- use Unicode character valueMOV EAX,8'a'- use UTF-8 character valueMOV EAX,A'a'- use ANSI character valueSwitching using conditional assembly:-Switching Unicode/ANSI APIs - various methods, aided by the double hash
Switching of the STRINGS directive
Switching of Unicode or ANSI character sequences
Switched type "S" to switch as B,W,D,Q or T type indicator
Switched character size indicator

GoRCInput file formats supported:-
ANSI, Unicode UTF-8 with BOM and UTF-16LE with BOMOutput:-
Output to the console will be in Unicode if permitted by thesystem; file to receive redirected output will be in the same format as thefirst input file.Unicode can be used in:-
filenames in include files resource files (eg. iconsand bitmaps) and raw data files;
filenames in input and output files via the console (command line);
defined words in the command line;
defined words in source or include files (equates and macros);
comments;
resource IDs;
resource types;
strings (see below).
Strings in version resource, stringtables, dialogs,menus, controls and user-defined resources:-always converted to Unicode UTF-16 format ifnot in that format already, escape sequences allowed and number conversioncarried out (see GoRC manual)Strings in RCDATA resource (raw data in resourcescript)(default action) kept in the sameformat as the source script, escape sequences allowed and numberconversion carried out (see GoRC manual)L"....."- string converted to UTF-16 format if not in thatformat already

GoLinkInput commands:-
Command line in console (MS-DOS command prompt):-
accepts Unicode filenames if supported by the operating system.
Command files:-
can be ANSI, Unicode UTF-8 with BOM and UTF-16LE with BOM
Output:-
Output to the console will be in Unicode if permitted by the system; file to receive redirected output will be in the same format as the first Unicode command file. If there is no Unicode command file the format depends on the operating system - see the GoLink manual.

Thanks and Tributes
Links

Copyright © Jeremy Gordon 1999-2022. All rights reserved.
Last update 10th May 2022.

TAGS:Windows assembler for Go

<<< Thank you for your visit >>>

Websites to related :
Affordable In-Home Tutoring Serv

  -->

Post Planner: Social Media Sched

   Pricing Features Login S

Ranchers Insurance - Crop Insura

   (435) 213-0463 brandon@ranchersinsurance.com HomeProductsPasture, Rangeland and ForageLivestock Risk ProtectionDairy Revenue ProtectionLivestock

D&eacute;centrale - an epicenter

   D&eacute;centrale an epicenter for self-empowered cultureGet startedAboutConventionsNetworkLocationImpressionsContactAgendaRadio LocationAgendaConnec

Pop-A-Lock® - Your Trusted Lock

   AutomotiveResidentialCommercial Locksmith ServicesPALSavesKids™AboutFranchisingBlogCareersContactFAQ Beaumont, TX ▼ Go to Beaumont page Change

Ordinacija dentalne medicine Her

  NynorskEnglishDeutschItaliano Ordinacija dentalne medicine Hercigonja MatkovićVaši zubi, naši prijateljiZrinka Hercigonja Matković, dr. med. de

Franquicia Directa Latinoaméric

  

Franquicia Directa - Tu Guia de

   Hemos actualizado nuestra Política de Privacidad para reflejar el nuevo GDPR (Reglamento General de Protección de Datos). Ver nue

Particles for Justice

   Home

Train and Bus Tickets & Schedule

   GoTicketo The world's largest database for bus and train tickets Search for bus tickets for mo

ads

Hot Websites