|


Compilers and Interpreters

Assemblers
Microsoft Macro-Assembler (MASM) 8.0
Microsoft
Macro-Assembler, or MASM, is now available for
non-commercial use. You will need to have the Visual
C++ 2005 Express Edition (see the Free C/C++
Compilers page to get it). It runs only on Windows
2000 SP 3, XP SP 2, and Windows Server 2003. Note
that there are other sources of MASM from Microsoft,
should you find the above restrictions to be too
limiting (for example, you are using a version of
Windows that is not supported, or you want to
develop for commercial use). If you use Visual C++
6.0, you can get the
Visual C++ 6.0 Processor Pack
which includes MASM. An old version of MASM, 6.14,
is also available from Microsoft's FTP server at
ftp://ftp.microsoft.com/Softlib/MSLFILES/ml614.exe
along with a
16 bit linker.
If you have downloaded Microsoft Windows 98 DDK in
the past, back when they made it freely available,
you should also have MASM in your installation.
Finally, I'm told that you can also get MASM from
the
Microsoft Kernel-Mode Driver Framework
which allows you to develop drivers for Windows
2000. Presumably, this MASM will permit commercial
use. Please note that Microsoft tends to move their
files around quite a bit, so if any of these URLs
are broken, just search their site.
Apple's Macintosh Programmer's Workshop
This is Apple's own Macintosh Programmer's Workshop.
It comes with assemblers (one for the 68K and one
for the PowerPC), compilers, debuggers and other
tools. They are downloadable from their website
absolutely free, and are the same those you get from
their Developer CD. Full documentation about the
tools as well as documentation about programming for
the Macintosh in general can be found online.
Lazy Assembler (LZASM)
Lazy Assembler is an x86 compiler that handles the
TASM (Turbo Assembler) IDEAL mode, supports 3DNow!,
MMX, SSE and SSE2 instructions, unicode strings,
optimization of "LEA" instructions, etc. At the time
I write this, the site does not specify which
systems are supported, but the assembler appears to
be either a Windows or an MSDOS program that
produces OBJ files.
GoASM
GoASM is an assembler for Windows systems that
creates COFF PE executables. It includes extensions
designed "to make programming for Windows easier".
High Level Assembly Language (HLA)
This tool converts your code, written in HLA into
80x86 assembly language, which you can then assemble
with masm or fasm. It apparently uses high level
constructs from the high level programming languages
like C/C++, and Pascal/Delphi.
asm68 PC Cross Macro Assembler for 68k
asm68 is a cross assembler for the 68k supporting
68008, 68000, 68010, 68020, 68030, 68040, 68EC030,
68EC040, 68LC040, CPU32, 68851, 68881, and 68882. It
runs on a PC and generates S-record, binaries. The
package includes a manual and samples.
V810 Assembler
This is a V810 assembler written using Java and
ANTLR, for Virtual Boy programming. You have to
scroll down the page to find the assembler.
RosAsm
RosAsm is an assembler for ReactOS. The package
includes an assembler, a disassembler and a
debugger.
NBASM, NewBasic Assembler
This x86 assembler is near MASM 5.1x compatible, and
is designed for newcomers to assembly language. It
appears to generate MSDOS executables.
FASM: Flat Assembler
Flat Assembler is an Intel x86 macro assembler for
MSDOS, Win32, Linux systems that accepts 16 bit and
32 bit 80x86/Pentium code, MMX, SSE, SSE2
instructions, and macros,. According to the website,
it also has support for "code optimization", and can
generate binary files, MZ and PE executables.
LD80 (L80 REPLACEMENT LINKER)
This is a cross-platform linker for CP/M and other 8
bit operating systems on the Z80/i8080 processors.
It has almost all the capabilities of Microsoft's
L80 linker along with other additional features. It
accepts .REL object files produced by M80 and other
compatible assemblers as well as .LIB library files
created by LIB80.
WarpLink
Devore Software has released their WarpLink linker
for MSDOS (previously a commercial product) into the
public domain (yes - public domain!) and the linker
and documentation can be freely downloaded, used,
sold, as you please. WarpLink can create MSDOS
software with overlays as well.
LA51
This cross-assembler runs on Linux and converts A51
assembly code into Intel HEX files. There is also a
utlity on the site to convert the Intel HEX files
into a binary file.
Masm32
MASM32 is a package containing an IDE for writing
assembly language program, an assembler (could it be
Microsoft's MASM?), and documentation. It apparently
also comes with WINDOWS.INC for those of you who
wish to assemble Windows programs. Numerous other
helpful aids, utilities, headers, and libraries are
also included.
Pass32
This Intel assembler can generate 16 bit DOS
executables, 32 bit DPMI programs (with a DOS
extender automatically bound to the executable), and
Win32 console and GUI programs. It has a run time
library for basic i/o, display handling, keyboard
handling, etc, and boasts an integrated
disassembler. The web site says that its "syntax is
similar to TASM but much easier to learn".
Alink
This looks like quite a promising free linker, with
source code and the ability to link a wide variety
of object code modules, from the OMF format
generated by Borland's compilers to the COFF format
used by Microsoft's compilers. It is able to
generate MSDOS COM and EXE files as well as Win32 PE
EXE and DLL files. Resource files are also supported
for the PE output files.
TMA Macro Assembler
This is a free Intel x86 assembler released under
the GNU copyright (which means that sources are
freely available). It even includes an IDE. Note: as
far as I can tell, only sources for the assembler
are available. No precompiled binary (executable) is
included, which means you have a chicken-and-egg
problem: you need an assembler to get started!
(Warning: this link leads directly to the Zip file
so don't click on it unless you really want to
download it. The last I checked, the file was about
569Kb in size.)
Arrow
A
very old MSDOS assembler that assembles Intel x86
code. Note that because of its age, it cannot
generate the newer instructions of the newer
processors. It can generate the Intel OBJ module
files. (Note: this package comes with the VAL linker
- see elsewhere on this page for more information on
this linker.) Warning: the link leads directly to
the Zip binary, so don't click it unless you want to
download the assembler.
CodeX Assembler
The CodeX assembler is an Intel assembler that
supports not only the Pentium instruction sets
(including Pentium 4) but also the AMD 3D Now!
instruction set. It can generate flat model binaries
(16 and 32 bits), DOS executables, Windows
applications and Windows DLLs.
Freelink
A
free linker that can link 16 bit OBJ code files.
Warning: the link leads directly to the Zip binary,
so don't click it unless you want to download the
assembler.
Nasm
This is a free assembler that assembles Intel x86
assembly code. It runs on MSDOS, Win32, Linux and
possibly other platforms.
Qlink
A
DOS linker that can link OBJ files to produce EXE or
COM files for the MSDOS system. It is supposed to be
typically ten times faster than MS LINK and can
handle USE32 segments that are larger than 64k.
According to the web page, the author hopes to
implement support for generating debugging
information for CodeView and Turbo Debugger. Note:
the utility was written by Qualitas Inc for its
internal use (remember the 386MAX memory manager?).
Val
A
free linker with source code for the MSDOS platform
that has been floating around for many years.
Although source code is provided, the author uses so
many macros to replace the traditional C constructs
(like "{" and "}") that it is almost as if the
sources have been obfuscated (unless you can be
bothered to figure it out). (Note that this package
comes with the Arrow assembler - see elsewhere on
this page for more information about this
assembler.) Warning: the link leads directly to the
Zip binary, so don't click it unless you want to
download the assembler.
|