diff options
author | Nick Clifton <nickc@redhat.com> | 2005-10-25 17:40:19 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2005-10-25 17:40:19 +0000 |
commit | 3c9b82baee30a1d3cfeb419643c6363dc9267208 (patch) | |
tree | e967c167366034d2a3bef0221e40d5abe7b999b6 /gas/doc | |
parent | fcfa13d2b2b18f83382c2a0cb82c9c7d21be10cb (diff) | |
download | gdb-3c9b82baee30a1d3cfeb419643c6363dc9267208.zip gdb-3c9b82baee30a1d3cfeb419643c6363dc9267208.tar.gz gdb-3c9b82baee30a1d3cfeb419643c6363dc9267208.tar.bz2 |
Add support for the Z80 processor family
Diffstat (limited to 'gas/doc')
-rw-r--r-- | gas/doc/Makefile.am | 1 | ||||
-rw-r--r-- | gas/doc/Makefile.in | 7 | ||||
-rw-r--r-- | gas/doc/all.texi | 1 | ||||
-rw-r--r-- | gas/doc/as.texinfo | 64 | ||||
-rw-r--r-- | gas/doc/c-z80.texi | 248 |
5 files changed, 318 insertions, 3 deletions
diff --git a/gas/doc/Makefile.am b/gas/doc/Makefile.am index b3b2580..bc25e88 100644 --- a/gas/doc/Makefile.am +++ b/gas/doc/Makefile.am @@ -55,6 +55,7 @@ CPU_DOCS = \ c-vax.texi \ c-v850.texi \ c-xtensa.texi \ + c-z80.texi \ c-z8k.texi gasver.texi: $(srcdir)/../../bfd/configure diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in index 4456fa6..bddd088 100644 --- a/gas/doc/Makefile.in +++ b/gas/doc/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. +# Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -246,6 +246,7 @@ CPU_DOCS = \ c-vax.texi \ c-v850.texi \ c-xtensa.texi \ + c-z80.texi \ c-z8k.texi @@ -347,7 +348,7 @@ as.html: as.texinfo $(DVIPS) -o $@ $< uninstall-info-am: - $(PRE_UNINSTALL) + @$(PRE_UNINSTALL) @if (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ @@ -363,7 +364,7 @@ uninstall-info-am: relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if cd "$(DESTDIR)$(infodir)"; then \ - echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done diff --git a/gas/doc/all.texi b/gas/doc/all.texi index 77ff5e9..c10ec08 100644 --- a/gas/doc/all.texi +++ b/gas/doc/all.texi @@ -58,6 +58,7 @@ @set V850 @set VAX @set XTENSA +@set Z80 @set Z8000 @c Does this version of the assembler use the difference-table kluge? diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index 4eefc42..09b844e 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -420,6 +420,19 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}. [@b{-mcpu=54[123589]}|@b{-mcpu=54[56]lp}] [@b{-mfar-mode}|@b{-mf}] [@b{-merrors-to-file} @var{<filename>}|@b{-me} @var{<filename>}] @end ifset + +@ifset Z80 + +@emph{Target Z80 options:} + [@b{-z80}] [@b{-r800}] + [@b{ -ignore-undocumented-instructions}] [@b{-Wnud}] + [@b{ -ignore-unportable-instructions}] [@b{-Wnup}] + [@b{ -warn-undocumented-instructions}] [@b{-Wud}] + [@b{ -warn-unportable-instructions}] [@b{-Wup}] + [@b{ -forbid-undocumented-instructions}] [@b{-Fud}] + [@b{ -forbid-unportable-instructions}] [@b{-Fup}] +@end ifset + @ifset Z8000 @c Z8000 has no machine-dependent assembler options @end ifset @@ -1138,6 +1151,35 @@ instructions must be exactly as specified in the assembly source. @end table @end ifset +@ifset Z80 +The following options are available when @value{AS} is configured for +a Z80 family processor. +@table @gcctabopt +@item -z80 +Assemble for Z80 processor. +@item -r800 +Assemble for R800 processor. +@item -ignore-undocumented-instructions +@itemx -Wnud +Assemble undocumented Z80 instructions that also work on R800 without warning. +@item -ignore-unportable-instructions +@itemx -Wnup +Assemble all undocumented Z80 instructions without warning. +@item -warn-undocumented-instructions +@itemx -Wud +Issue a warning for undocumented Z80 instructions that also work on R800. +@item -warn-unportable-instructions +@itemx -Wup +Issue a warning for undocumented Z80 instructions that do notwork on R800. +@item -forbid-undocumented-instructions +@itemx -Fud +Treat all undocumented instructions as errors. +@item -forbid-unportable-instructions +@itemx -Fup +Treat undocumented Z80 intructions that do notwork on R800 as errors. +@end table +@end ifset + @c man end @menu @@ -2130,6 +2172,9 @@ is considered a comment and is ignored. The line comment character is @ifset VAX @samp{#} on the Vax; @end ifset +@ifset Z80 +@samp{;} for the Z80; +@end ifset @ifset Z8000 @samp{!} for the Z8000; @end ifset @@ -4272,6 +4317,13 @@ The syntax for @code{equ} on the HPPA is @samp{@var{symbol} .equ @var{expression}}. @end ifset +@ifset Z80 +The syntax for @code{equ} on the Z80 is +@samp{@var{symbol} equ @var{expression}}. +On the Z80 it is an eror if @var{symbol} is already defined, +compare @xref{Equiv}. +@end ifset + @node Equiv @section @code{.equiv @var{symbol}, @var{expression}} @cindex @code{equiv} directive @@ -5512,6 +5564,11 @@ The syntax for @code{set} on the HPPA is @samp{@var{symbol} .set @var{expression}}. @end ifset +@ifset Z80 +On Z80 @code{set} is a real instruction, use +@samp{@var{symbol} defl @var{expression}} instead. +@end ifset + @node Short @section @code{.short @var{expressions}} @@ -6196,6 +6253,9 @@ subject, see the hardware manufacturer's manual. @ifset XTENSA * Xtensa-Dependent:: Xtensa Dependent Features @end ifset +@ifset Z80 +* Z80-Dependent:: Z80 Dependent Features +@end ifset @ifset Z8000 * Z8000-Dependent:: Z8000 Dependent Features @end ifset @@ -6350,6 +6410,10 @@ family. @include c-tic54x.texi @end ifset +@ifset Z80 +@include c-z80.texi +@end ifset + @ifset Z8000 @include c-z8k.texi @end ifset diff --git a/gas/doc/c-z80.texi b/gas/doc/c-z80.texi new file mode 100644 index 0000000..f650581 --- /dev/null +++ b/gas/doc/c-z80.texi @@ -0,0 +1,248 @@ +@c This is part of the GAS manual. +@c For copying conditions, see the file as.texinfo. + +@ifset GENERIC +@page +@node Z80-Dependent +@chapter Z80 Dependent Features +@end ifset + +@c DO-NOT-COMMIT + +@ifclear GENERIC +@node Machine Dependencies +@chapter Z80 Dependent Features +@end ifclear + +@cindex Z80 support +@menu +* Z80 Options:: Options +* Z80 Syntax:: Syntax +* Z80 Floating Point:: Floating Point +* Z80 Directives:: Z80 Machine Directives +* Z80 Opcodes:: Opcodes +@end menu + +@node Z80 Options +@section Options +@cindex Z80 options +@cindex options for Z80 +The Zilog Z80 and Ascii R800 version of @code{@value{AS}} have a few machine +dependent options. +@table @option +@cindex @code{-z80} command line option, Z80 +@item -z80 +Produce code for the Z80 processor. There are additional options to +request warnings and error messages for undocumented instructions. +@item -ignore-undocumented-instructions +@itemx -Wnud +Silently assemble undocumented Z80-instructions that have been adopted +as documented R800-instructions. +@item -ignore-unportable-instructions +@itemx -Wnup +Silently assemble all undocumented Z80-instructions. +@item -warn-undocumented-instructions +@itemx -Wud +Issue warnings for undocumented Z80-instructions that work on R800, do +not assemble other undocumented instructions without warning. +@item -warn-unportable-instructions +@itemx -Wup +Issue warnings for other undocumented Z80-instructions, do not treat any +undocumented instructions as errors. +@item -forbid-undocumented-instructions +@itemx -Fud +Treat all undocumented z80-instructions as errors. +@item -forbid-unportable-instructions +@itemx -Fup +Treat undocumented z80-instructions that do not work on R800 as errors. + +@cindex @code{-r800} command line option, Z80 +@item -r800 +Produce code for the R800 processor. The assembler does not support +undocumented instructions for the R800. +In line with common practice, @code{@value{AS}} uses Z80 instriction names +for the R800 processor, as far as they exist. +@end table + +@cindex Z80 Syntax +@node Z80 Syntax +@section Syntax +The assembler syntax closely follows the 'Z80 family CPU User Manual' by +Zilog. +In expressions a single @samp{=} may be used as ``is equal to'' +comparison operator. + +Suffices can be used to indicate the radix of integer constants; +@samp{H} or @samp{h} for hexadecimal, @samp{D} or @samp{d} for decimal, +@samp{Q}, @samp{O}, @samp{q} or @samp{o} for octal, and @samp{B} for +binary. + +The suffix @samp{b} denotes a backreference to local label. + +@menu +* Z80-Chars:: Special Characters +* Z80-Regs:: Register Names +* Z80-Case:: Case Sensitivity +@end menu + +@node Z80-Chars +@subsection Special Characters + +@cindex line comment character, Z80 +@cindex Z80 line comment character +The semicolon @samp{;} is the line comment character; + +@cindex location counter, Z80 +@cindex hexadecimal prefix, Z80 +@cindex Z80 $ +The dollar sign @samp{$} can be used as a prefix for hexadecimal numbers +and as a symbol denoting the current location counter. + +@cindex character escapes, Z80 +@cindex Z80, \ +A backslash @samp{\} is an ordinary character for the Z80 assembler. + +@cindex character constant, Z80 +@cindex single quote, Z80 +@cindex Z80 ' +The single quote @samp{'} must be followed by a closing quote. If there +is one character inbetween, it is a character constant, otherwise it is +a string constant. + +@node Z80-Regs +@subsection Register Names +@cindex Z80 registers +@cindex register names, Z80 + +The registers are referred to with the letters assigned to them by +Zilog. In addition @command{@value{AS}} recognises @samp{ixl} and +@samp{ixh} as the least and most significant octet in @samp{ix}, and +similarly @samp{iyl} and @samp{iyh} as parts of @samp{iy}. + +@c The @samp{'} in @samp{ex af,af'} may be omitted. + +@node Z80-Case +@subsection Case Sensitivity +@cindex Z80, case sensitivity +@cindex case sensitivity, Z80 + +Upper and lower case are equivalent in register names, opcodes, +condition codes and assembler directives. +The case of letters is significant in labels and symbol names. The case +is also important to distinguish the suffix @samp{b} for a backward reference +to a local label from the suffix @samp{B} for a number in binary notation. + +@node Z80 Floating Point +@section Floating Point +@cindex floating point, Z80 +@cindex Z80 floating point +Floating-point numbers are not supported. + +@node Z80 Directives +@section Z80 Assembler Directives + +@command{@value{AS}} for the Z80 supports some additional directives for +compatibility with other assemblers. + +@cindex Z80-only directives +These are the additional directives in @code{@value{AS}} for the Z80: + +@table @code +@item db @var{expression}|@var{string}[,@var{expression}|@var{string}...] +@itemx defb @var{expression}|@var{string}[,@var{expression}|@var{string}...] +For each @var{string} the characters are copied to the object file, for +each other @var{expression} the value is stored in one byte, ignoring +overflow. + +@item dw @var{expression}[,@var{expression}...] +@itemx defw @var{expression}[,@var{expression}...] +For each @var{expression} the value is stored in two bytes, ignoring +overflow. + +@item ds @var{count}[, @var{value}] +@itemx defs @var{count}[, @var{value}] +@c Synonyms for @code{ds.b}, +@c which should have been described elsewhre +Fill @var{count} bytes in the object file with @var{value}, if +@var{value} is omitted it defaults to zero. + +@item @var{symbol} equ @var{expression} +@itemx @var{symbol} defl @var{expression} +These directives set the value of @var{symbol} to @var{expression}. To +keep code portable to other assemblers it is best to use @samp{equ} for +the first definition and @samp{defl} for redefinitions. + +@item set +This is a normal instruction on Z80, and not an assembler directive. + +@item psect @var{name} +A synonym for @xref{Section}, no second argument should be given. +@ignore + +The following attributes will possibly be recognised in the future +@table @code +@item abs +The section is to be absolute. @code{@value{AS}} will issue an error +message because it can not produce an absolute section. +@item global +The section is to be concatenated with other sections of the same name +by the linker, this is the default. +@item local +The section is not global. @code{@value{AS}} will issue a warning if +object file format is not soff. +@item ovrld +The section is to be overlapped with other sections of the same name by +the linker. @code{@value{AS}} will issue an error message +because it can not mark a section as such. +@item pure +The section is marked as read only. +@end table +@end ignore + +@end table + +@node Z80 Opcodes +@section Opcodes +In line with commmon practice Z80 mnonics are used for both the Z80 and +the R800. + +In many instructions it is possible to use one of the half index +registers (@samp{ixl},@samp{ixh},@samp{iyl},@samp{iyh}) in stead of an +8-bit general purpose register. This yields instructions that are +documented on the R800 and undocumented on the Z80. +Similarly @code{in f,(c)} is documented on the R800 and undocumented on +the Z80. + +The assembler also supports the following undocumented Z80-instructions, +that have not been adopted in the R800 instruction set: +@table @code +@item out (c),0 +Sends zero to the port pointed to by register c. + +@item sli @var{m} +Equivalent to @code{@var{m} = (@var{m}<<1)+1}, the operand @var{m} can +be any operand that is valid for @samp{sla}. One can use @samp{sll} as a +synonym for @samp{sli}. + +@item @var{op} (ix+@var{d}), @var{r} +This is equivalent to + +@example +ld @var{r}, (ix+@var{d}) +@var{opc} @var{r} +ld (ix+@var{d}), @var{r} +@end example + +The operation @samp{@var{opc}} may be any of @samp{res @var{b},}, +@samp{set @var{b},}, @samp{rl}, @samp{rlc}, @samp{rr}, @samp{rrc}, +@samp{sla}, @samp{sli}, @samp{sra} and @samp{srl}, and the register +@samp{@var{r}} may be any of @samp{a}, @samp{b}, @samp{c}, @samp{d}, +@samp{e}, @samp{h} and @samp{l}. + +@item @var{opc} (iy+@var{d}), @var{r} +As above, but with @samp{iy} instead of @samp{ix}. +@end table + +The web site at @uref{http://www.z80.info} is a good starting place to +find more information on programming the Z80. + |