From 1c7da404564f0c8e59342bbd29e0d3b9d368f42d Mon Sep 17 00:00:00 2001 From: Debbie Wiles Date: Thu, 9 May 2002 21:23:55 +0000 Subject: [PATCH] *** empty log message *** --- doc/nasmdoc.src | 107 ++++++++++++++++++++++++++++++++++++++------------------ insns.dat | 6 ++-- 2 files changed, 76 insertions(+), 37 deletions(-) diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src index b2529ff..5e29afe 100644 --- a/doc/nasmdoc.src +++ b/doc/nasmdoc.src @@ -253,38 +253,38 @@ team of developers, accessible through the \c{nasm-devel} mailing list If you want to report a bug, please read \k{bugs} first. NASM has a \i{WWW page} at -\W{http://www.web-sites.co.uk/nasm}\c{http://www.web-sites.co.uk/nasm}. +\W{http://www.web-sites.co.uk/nasm}\c{http://www.web-sites.co.uk/nasm}, +and another, with additional information, at +\W{http://nasm.2y.net/}\c{http://nasm.2y.net/} The original authors are \i{e\-mail}able as \W{mailto:jules@dsf.org.uk}\c{jules@dsf.org.uk} and \W{mailto:anakin@pobox.com}\c{anakin@pobox.com}. The latter is no longer involved in the development team. -\i{New releases} of NASM are uploaded to the official site -\W{http://www.web-sites.co.uk/nasm}\c{http://www.web-sites.co.uk/nasm}, +\i{New releases} of NASM are uploaded to the official sites +\W{http://www.web-sites.co.uk/nasm}\c{http://www.web-sites.co.uk/nasm} and to \W{ftp://ftp.kernel.org/pub/software/devel/nasm/}\i\c{ftp.kernel.org} and \W{ftp://ibiblio.org/pub/Linux/devel/lang/assemblers/}\i\c{ibiblio.org}. -\# \W{ftp://ftp.simtel.net/pub/simtelnet/msdos/asmutl/}\i\c{ftp.simtel.net} -\# and -\# \W{ftp://ftp.coast.net/coast/msdos/asmutil/}\i\c{ftp.coast.net}. Announcements are posted to \W{news:comp.lang.asm.x86}\i\c{comp.lang.asm.x86}, \W{news:alt.lang.asm}\i\c{alt.lang.asm} and \W{news:comp.os.linux.announce}\i\c{comp.os.linux.announce} -\# and -\# \W{news:comp.archives.msdos.announce}\i\c{comp.archives.msdos.announce} -\# (the last one is done automagically by uploading to -\# \W{ftp://ftp.simtel.net/pub/simtelnet/msdos/asmutl/}\c{ftp.simtel.net}). If you want information about NASM beta releases, and the current -development status, please subscribe to the \i\c{nasm-devel} email lists +development status, please subscribe to the \i\c{nasm-devel} email list by registering at -\W{http://groups.yahoo.com/group/nasm-devel}\c{http://groups.yahoo.com/group/nasm-devel} -and +\W{http://groups.yahoo.com/group/nasm-devel}\c{http://groups.yahoo.com/group/nasm-devel}, \W{http://www.pairlist.net/mailman/listinfo/nasm-devel}\c{http://www.pairlist.net/mailman/listinfo/nasm-devel} +and +\W{http://sourceforge.net/projects/nasm}\c{http://sourceforge.net/projects/nasm}. + +The preferred list is the list at Sourceforge, which is also the home to +the latest nasm source code and releases. The other lists are open, but +may not continue to be supported in the long term. \H{install} Installation @@ -784,9 +784,9 @@ character} for options. So setting the \c{NASMENV} variable to the value \c{!-s!-ic:\\nasmlib} is equivalent to setting it to \c{-s -ic:\\nasmlib}, but \c{!-dNAME="my name"} will work. -This variable was called \c{NASM} in earlier versions of NASM, -however, this caused problems with makefiles which used a \c{$(NASM)} -variable. +This environment variable was previously called \c{NASM}. This was +changed with version 0.98.31. + \H{qstart} \i{Quick Start} for \i{MASM} Users @@ -1676,14 +1676,52 @@ You can \i{pre-define} single-line macros using the `-d' option on the NASM command line: see \k{opt-d}. +\S{concat%+} Concatenating Single Line Macro Tokens: \i\c{%+} + +Individual tokens in single line macros can be concatenated, to produce +longer tokens for later processing. This can be useful if there are +several similar macros that perform simlar functions. + +As an example, consider the following: + +\c %define BDASTART 400h ; Start of BIOS data area + +\c struc tBIOSDA ; its structure +\c .COM1addr RESW 1 +\c .COM2addr RESW 1 +\c ; ..and so on +\c endstruc + +Now, if we need to access the elements of tBIOSDA in different places, +we can end up with: + +\c mov ax,BDASTART + tBIOSDA.COM1addr +\c mov bx,BDASTART + tBIOSDA.COM2addr + +This will become pretty ugly (and tedious) if used in many places, and +can be reduced in size significantly by using the following macro: + +\c ; Macro to access BIOS variables by their names (from tBDA): + +\c %define BDA(x) BDASTART + tBIOSDA. %+ x + +Now the above code can be written as: + +\c mov ax,BDA(COM1addr) +\c mov bx,BDA(COM2addr) + +Using this feature, we can simplify references to a lot of macros (and, +in turn, reduce typing errors). + + \S{undef} Undefining macros: \i\c{%undef} Single-line macros can be removed with the \c{%undef} command. For example, the following sequence: \c %define foo bar -\c %undef foo -\c mov eax, foo +\c %undef foo +\c mov eax, foo will expand to the instruction \c{mov eax, foo}, since after \c{%undef} the macro \c{foo} is no longer defined. @@ -1776,8 +1814,8 @@ this. \c %macro prologue 1 \c push ebp -\c mov ebp,esp -\c sub esp,%1 +\c mov ebp,esp +\c sub esp,%1 \c %endmacro This defines a C-like function prologue as a macro: so you would @@ -1788,8 +1826,8 @@ invoke the macro with a call such as which would expand to the three lines of code \c myfunc: push ebp -\c mov ebp,esp -\c sub esp,12 +\c mov ebp,esp +\c sub esp,12 The number \c{1} after the macro name in the \c{%macro} line defines the number of parameters the macro \c{prologue} expects to receive. @@ -5631,8 +5669,9 @@ We have never yet released a version of NASM with any \e{known} bugs. That doesn't usually stop there being plenty we didn't know about, though. Any that you find should be reported firstly via the \i\c{bugtracker} at -\W{http://nasm.2y.net/bugtracker/}\c{http://nasm.2y.net/bugtracker/}, -or if that fails then through one of the contacts in \k{contact} +\W{https://sourceforge.net/projects/nasm/}\c{https://sourceforge.net/projects/nasm/} +(click on "Bugs"), or if that fails then through one of the +contacts in \k{contact}. Please read \k{qstart} first, and don't report the bug if it's listed in there as a deliberate feature. (If you think the feature @@ -5909,7 +5948,7 @@ disassembler works, because as far as I know, it isn't an efficient one anyway. You have been warned. -\A{iref} Intel x86 Instruction Reference +\A{iref} x86 Instruction Reference This appendix provides a complete list of the machine instructions which NASM will assemble, and a short description of the function of @@ -5918,7 +5957,7 @@ each one. It is not intended to be exhaustive documentation on the fine details of the instructions' function, such as which exceptions they can trigger: for such documentation, you should go to Intel's Web -site, \W{http://www.intel.com/}\c{http://www.intel.com/}. +site, \W{http://developer.intel.com/design/Pentium4/manuals/}\c{http://developer.intel.com/design/Pentium4/manuals/}. Instead, this appendix is intended primarily to provide documentation on the way the instructions may be used within NASM. @@ -12065,13 +12104,13 @@ entry point in an operating system. \b The \c{EIP} register is copied into the \c{ECX} register. -\b Bits [31–0] of the 64-bit SYSCALL/SYSRET Target Address Register +\b Bits [31-0] of the 64-bit SYSCALL/SYSRET Target Address Register (\c{STAR}) are copied into the \c{EIP} register. -\b Bits [47–32] of the \c{STAR} register specify the selector that is +\b Bits [47-32] of the \c{STAR} register specify the selector that is copied into the \c{CS} register. -\b Bits [47–32]+1000b of the \c{STAR} register specify the selector that +\b Bits [47-32]+1000b of the \c{STAR} register specify the selector that is copied into the SS register. The \c{CS} and \c{SS} registers should not be modified by the operating @@ -12126,7 +12165,7 @@ In particular, note that this instruction des not save the values of \c{CS} or \c{(E)IP}. If you need to return to the calling code, you need to write your code to cater for this. -For more information, see the Intel Architecture Software Developer’s +For more information, see the Intel Architecture Software Developer's Manual, Volume 2. @@ -12184,14 +12223,14 @@ Manual, Volume 2. after the corresponding \c{SYSCALL} instruction, is copied into the \c{EIP} register. -\b Bits [63–48] of the \c{STAR} register specify the selector that is copied +\b Bits [63-48] of the \c{STAR} register specify the selector that is copied into the \c{CS} register. -\b Bits [63–48]+1000b of the \c{STAR} register specify the selector that is +\b Bits [63-48]+1000b of the \c{STAR} register specify the selector that is copied into the \c{SS} register. -\b Bits [1–0] of the \c{SS} register are set to 11b (RPL of 3) regardless of -the value of bits [49–48] of the \c{STAR} register. +\b Bits [1-0] of the \c{SS} register are set to 11b (RPL of 3) regardless of +the value of bits [49-48] of the \c{STAR} register. The \c{CS} and \c{SS} registers should not be modified by the operating system between the execution of the \c{SYSCALL} instruction and its diff --git a/insns.dat b/insns.dat index 213e7d4..525477a 100644 --- a/insns.dat +++ b/insns.dat @@ -139,9 +139,9 @@ CALL imm|far \322\1\x9A\34\37 8086,ND CALL imm16 \320\1\xE8\64 8086 CALL imm16|near \320\1\xE8\64 8086 CALL imm16|far \320\1\x9A\34\37 8086,ND -CALL imm32 \321\1\xE8\64 8086 -CALL imm32|near \321\1\xE8\64 8086 -CALL imm32|far \321\1\x9A\34\37 8086,ND +CALL imm32 \321\1\xE8\64 386 +CALL imm32|near \321\1\xE8\64 386 +CALL imm32|far \321\1\x9A\34\37 386,ND CALL imm:imm \322\1\x9A\35\30 8086 CALL imm16:imm \320\1\x9A\31\30 8086 CALL imm:imm16 \320\1\x9A\31\30 8086 -- 2.7.4