123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- This is a distribution of NASM, the Netwide Assembler. NASM is a
- prototype general-purpose x86 assembler. It will currently output
- flat-form binary files, a.out, COFF and ELF Unix object files,
- Microsoft Win32 and 16-bit DOS object files, OS/2 object files, the
- as86 object format, and a home-grown format called RDOFF.
- Also included is NDISASM, a prototype x86 binary-file disassembler
- which uses the same instruction table as NASM.
- To install NASM on UNIX or Linux, type `./configure', then `make', and
- then either `make install', or copy the file `nasm' (and maybe
- `ndisasm') to a directory on your search path (maybe /usr/local/bin,
- or ~/bin if you don't have root access). You may also want to copy the
- man page `nasm.1' (and maybe `ndisasm.1') to somewhere sensible. Note
- that source and binaries are also available in RPM format; to install
- an RPM on a system which uses this packaging format (mostly Linux
- distributions) simply do "rpm -Uivh filename.rpm".
- To install under DOS, if you don't need to rebuild from the sources,
- you can just copy either nasm.exe and ndisasm.exe (32-bit DOS-extended
- versions), nasmr.exe and ndisasmr.exe (16-bit classical DOS
- executables), or nasmw.exe and ndisasmw.exe (Win32 console
- applications - less likely to run out of memory), to somewhere on your
- PATH.
- The 32-bit applications require a DPMI server. If you're running
- under plain DOS and don't have a DPMI server already, you can get
- CSDPMI from ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2misc/.
- To rebuild the DOS sources, various makefiles are provided:
- - Makefile.dos, the one I build the standard 16-bit releases from,
- designed for a hybrid system using Microsoft C and Borland Make
- (don't ask why :-)
- - Makefile.vc, for Microsoft Visual C++ compiling to a Win32
- command-line application. This is the one I build the standard
- Win32 release binaries from.
- - Makefile.bor, for Borland C.
- - Makefile.bc2, also for Borland C, contributed by Fox Cutter.
- Reported to work better than Makefile.bor on some systems.
- - Makefile.sc, for Symantec C++, compiling to a 32-bit extended DOS
- executable.. Contributed by Mark Junker.
- - Makefile.scw, also for Symantec C++, compiling to a Win32 command-
- line application. Also contributed by Mark Junker.
- - Makefile.wc, for Watcom C, compiling to a 32-bit extended DOS
- executable. Contributed by Dominik Behr.
- - Makefile.wcw, also for Watcom C, compiling to a Win32 command-
- line application. Also contributed by Dominik Behr.
- - Makefile.dj, for DJGPP, compiling to a 32-bit extended DOS
- executable. Contributed by Dominik Behr.
- - Makefile.lcc, for lcc-win32, compiling to a Win32 command line
- application. (The lcc-win32 compiler and tools are available from
- http://www.remcomp.com/lcc-win32/)
- I can't guarantee that all of those makefiles work, because I don't
- have all of those compilers. However, Makefile.dos and Makefile.vc
- work on my system, and so do Makefile.bor and Makefile.bc2.
- Be careful with Borland C: there have been various conflicting
- reports about how reliable the Huge memory model is. If you try to
- compile NASM in Large model, you may get DGROUP overflows due to the
- vast quantity of data in the instruction tables. I've had reports
- from some people that Huge model doesn't work at all (and also
- reports from others that it works fine), so if you don't want to try
- moving to Huge, you could try adding the option `-dc' to the
- compiler command line instead, which causes string literals to be
- moved from DGROUP to the code segments and might make Large model
- start working. (Either solution works for me.)
- To rebuild truly from scratch, or to make any changes to insns.dat or
- standard.mac, you need a Perl interpreter installed. Perl
- interpreters are available for a number of platforms, from:
- http://www.cpan.org/ports/
- For DOS you can also get one from:
- ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/
- Dominik Behr has also contributed the file misc/pmw.bat, which is a
- batch file to turn the output from Makefile.wc (NASM.EXE and
- NDISASM.EXE) into standalone executables incorporating Tran's
- PMODE/W DOS extender, rather than depending on an external extender
- program.
- Some of the Windows makefiles produce executables called nasmw.exe
- and ndisasmw.exe, and some don't. Be prepared for either...
- If you want to build a restricted version of NASM containing only
- some of the object file formats, you can achieve this by adding
- #defines to `outform.h' (see the file itself for documentation), or
- equivalently by adding compiler command line options in the
- Makefile.
- There is a machine description file for the `LCC' retargetable C
- compiler (version 4.0), in the directory `lcc', along with
- instructions for its use. This means that NASM can now be used as
- the code-generator back end for a useful C compiler.
- Michael `Wuschel' Tippach has ported his DOS extender `WDOSX' to
- enable it to work with the 32-bit binary files NASM can output: the
- original extender and his port `WDOSX/N' are available from his web
- page, http://www.geocities.com/SiliconValley/Park/4493.
- Matt Mastracci has written a document explaining how to write
- assembly language modules in DJGPP programs using NASM: it's on his
- web site at http://www.ucalgary.ca/~mmastrac/djgppasm.doc.
- The `misc' directory contains `nasm.sl', a NASM editing mode for the
- JED programmers' editor (see http://space.mit.edu/~davis/jed.html
- for details about JED). The comment at the start of the file gives
- instructions on how to install the mode. This directory also
- contains a file (`magic') containing lines to add to /etc/magic on
- Unix systems to allow the `file' command to recognise RDF files, and
- a zip file (`exasm.zip') containing the necessary files for syntax
- highlighting in the Aurora DOS editor. (The Aurora files were
- contributed by <[email protected]>; I haven't tested them as I
- don't have Aurora.)
- The `rdoff' directory contains sources for a linker and loader for
- the RDF object file format, to run under Linux, and also
- documentation on the internal structure of RDF files.
- For information about how you can distribute and use NASM, see the
- file Licence. We were tempted to put NASM under the GPL, but decided
- that in many ways it was too restrictive for developers.
- For release 0.98 and later, the NASM source distribution contains the
- following components:
- Unix Windows, OS/2 DOS
- nasm-X.XX.tar.gz nasm-X.XX.zip nasmXXXs.zip
- Main archive: Contain all sources you need to build NASM,
- plus the documentation source code. If you have a Perl
- interpreter and (possibly) Winhelp compiler installed, you
- don't need any additional files.
- nasm-X.XX-xdoc.tar.gz nasm-X.XX-xdoc.zip nasmXXXd.zip
- Documentation in HTML, INFO, text, and PostScript format.
- You can compile these files yourself from the main archive
- if you have a Perl interpreter installed.
- N/A nasm-X.XX-whlp.zip N/A
- Documentation in Windows help format. You can compile this
- file yourself from the main archive if you have a Perl
- interpreter and a Winhelp compiler installed.
- The Unix, Windows-OS/2, and DOS versions differ in the following ways:
- The Unix version uses the Unix line ending convention (LF), and long file
- names with upper and lower case.
- The Windows-OS/2 version uses the Microsoft line ending convention
- (CR+LF), and long file names with upper and lower case.
- The DOS version uses the Microsoft line ending convention (CR+LF),
- with all filenames in 8.3 monocase.
- For information about how to use NASM, see the various forms of
- documentation in the `doc' directory: documentation is provided in
- HTML, PostScript, plain text, Texinfo, and Windows Help formats. For
- information about how to use NDISASM, see `ndisasm.doc'. For
- information about the internal structure of NASM, see
- `internal.doc'. (In particular, _please_ read `internal.doc' before
- writing any code for us...)
- The NASM web page is at http://www.cryogen.com/Nasm/
- Bug reports (and patches if you can) should be sent to
- <[email protected]>.
|