d52c7bc4b17f0e537d5e3593eceef377e89d99b6
[platform/upstream/nasm.git] / Readme
1 This is a distribution of NASM, the Netwide Assembler. NASM is a
2 prototype general-purpose x86 assembler. It will currently output
3 flat-form binary files, a.out, COFF and ELF Unix object files,
4 Microsoft 16-bit DOS and Win32 object files, the as86 object format,
5 and a home-grown format called RDF.
6
7 Also included is NDISASM, a prototype x86 binary-file disassembler
8 which uses the same instruction table as NASM.
9
10 To install NASM on Linux, type `make', and then when it has finished
11 copy the file `nasm' (and maybe `ndisasm') to a directory on your
12 search path (maybe /usr/local/bin, or ~/bin if you don't have root
13 access). You may also want to copy the man page `nasm.1' (and maybe
14 `ndisasm.1') to somewhere sensible.
15
16 To rebuild the DOS sources, various makefiles are provided:
17 - Makefile.dos, the one I build the standard releases from, designed
18   for a hybrid system using Microsoft C and Borland Make (don't ask
19   why :-)
20 - Makefile.bor (for Borland C)
21 - Makefile.bc2 (also for Borland C, contributed by Fox Cutter
22   <lmb@comtch.iea.com>, may work better than Makefile.bor in some
23   cases).
24 - Makefile.wc, for Watcom C, compiling to a 32-bit extended DOS
25   executable. Contributed by Dominik Behr.
26 - Makefile.wcw, also for Watcom C, compiling to a Win32 command-
27   line application. Also contributed by Dominik Behr.
28
29 I don't guarantee that any of those, other than Makefile.dos, work,
30 since I don't have the compilers to test them myself. Also be
31 warned: I have had various conflicting reports regarding building
32 NASM using Borland C. Several people have informed me that it
33 doesn't work except under Huge model, and one or two have said that
34 it doesn't work under Huge model either.
35
36 Dominik Behr has also contributed the file misc/pmw.bat, which is a
37 batch file to turn the output from Makefile.wc (NASM.EXE and
38 NDISASM.EXE) into standalone executables incorporating Tran's
39 PMODE/W DOS extender, rather than depending on an external extender
40 program.
41
42 If you're trying to unpack the DOS (.ZIP format) archive under Unix
43 instead of using the .tar.gz version, you can save some time by
44 doing `unzip -aL', which will convert the DOS-format text files to
45 Unix and also convert all names to lower case.
46
47 If you want to build a restricted version of NASM containing only
48 some of the object file formats, you can achieve this by adding
49 #defines to `outform.h' (see the file itself for documentation), or
50 equivalently by adding compiler command line options in the
51 Makefile.
52
53 There is a machine description file for the `LCC' retargetable C
54 compiler, in the directory `lcc', along with instructions for its
55 use. This means that NASM can now be used as the code-generator back
56 end for a useful C compiler.
57
58 Michael `Wuschel' Tippach has ported his DOS extender `WDOSX' to
59 enable it to work with the 32-bit binary files NASM can output: the
60 original extender and his port `WDOSX/N' are available from his web
61 page, http://www.geocities.com/SiliconValley/Park/4493.
62
63 Matt Mastracci has written a document explaining how to write
64 assembly language modules in DJGPP programs using NASM: it's on his
65 web site at http://www.ucalgary.ca/~mmastrac/djgppasm.doc.
66
67 The `misc' directory contains `nasm.sl', a NASM editing mode for the
68 JED programmers' editor (see http://space.mit.edu/~davis/jed.html
69 for details about JED). The comment at the start of the file gives
70 instructions on how to install the mode. This directory also
71 contains a file (`magic') containing lines to add to /etc/magic on
72 Unix systems to allow the `file' command to recognise RDF files.
73
74 The `rdoff' directory contains sources for a linker and loader for
75 the RDF object file format, to run under Linux, and also
76 documentation on the internal structure of RDF files.
77
78 For information about how you can distribute and use NASM, see the
79 file Licence. We were tempted to put NASM under the GPL, but decided
80 that in many ways it was too restrictive for developers.
81
82 For information about how to use NASM, see `nasm.doc'. For
83 information about how to use NDISASM, see `ndisasm.doc'. For
84 information about the internal structure of NASM, see
85 `internal.doc'. (In particular, _please_ read `internal.doc' before
86 writing any code for us...)
87
88 Bug reports (and patches if you can) should be sent to
89 <jules@dcs.warwick.ac.uk> or <anakin@pobox.com>.