📄 as_de.html
字号:
<P><H2><A HREF="#sect_E_">E. Vordefinierte Symbole</A></H2>
<P><H2><A HREF="#sect_F_">F. Mitgelieferte Includes</A></H2>
<P><H3><A HREF="#sect_F_1_">F.1. BITFUNCS.INC</A></H3>
<P><H3><A HREF="#sect_F_2_">F.2. CTYPE.INC</A></H3>
<P><H2><A HREF="#sect_G_">G. Danksagungen</A></H2>
<P><H2><A HREF="#sect_H_">H. Änderungen seit Version 1.3</A></H2>
<P><H2><A HREF="#sect_I_">I. Hinweise zum Quellcode von AS</A></H2>
<P><H3><A HREF="#sect_I_1_">I.1. Verwendete Sprache</A></H3>
<P><H3><A HREF="#sect_I_2_">I.2. Abfangen von Systemabhängigkeiten</A></H3>
<P><H3><A HREF="#sect_I_3_">I.3. Systemunabhängige Dateien</A></H3>
<P><H4><A HREF="#sect_I_3_1_">I.3.1. Von AS genutzte Module</A></H4>
<P><H4><A HREF="#sect_I_3_2_">I.3.2. Zusätzliche Module für die Hilfsprogramme</A></H4>
<P><H3><A HREF="#sect_I_4_">I.4. Während der Erzeugung von AS gebrauchte Module</A></H3>
<P><H3><A HREF="#sect_I_5_">I.5. Generierung der Nachrichtendateien</A></H3>
<P><H4><A HREF="#sect_I_5_1_">I.5.1. Format der Quelldateien</A></H4>
<P><H3><A HREF="#sect_I_6_">I.6. Dokumentationserzeugung</A></H3>
<P><H3><A HREF="#sect_I_7_">I.7. Testsuite</A></H3>
<P><H3><A HREF="#sect_I_8_">I.8. Einhängen eines neuen Zielprozessors</A></H3>
<P><H3><A HREF="#sect_I_9_">I.9. Lokalisierung auf eine neue Sprache</A></H3>
<P><H1><A HREF="#sect_bib">Literaturverzeichnis
</A></H1>
<P><H1><A HREF="#sect_index">Index
</A></H1>
<P>
<H1><A NAME="sect_1_">1. Allgemeines</A></H1>
<P>
Diese Anleitung wendet sich an Leute, die bereits in Assembler
programmiert haben und sich darüber informieren möchten,
wie man mit AS umgeht. Sie hat eher die Form eines Referenz- und
nicht Benutzerhandbuches. Als solches macht sie weder den Versuch,
die Sprache Assembler an sich zu erklären, noch erläutert
sie die Architektur bestimmter Prozessoren. Im Literaturverzeichnis
habe ich weiterführende Literatur aufgelistet, die bei der
Implementation der einzelnen Codegeneratoren maßgebend war. Um
Assembler von Grund auf zu lernen, kenne ich kein Buch; ich habe es
im wesentlichen im ,,Trial and error''-Verfahren gelernt.
<P>
<H2><A NAME="sect_1_1_">1.1. Lizenzbedingungen</A></H2>
<A NAME="ref_SectLicense"></A>
<P>
Bevor es in medias res geht, erst einmal der unvermeidliche Prolog:
<P>
AS in der vorliegenden Version untersteht der Gnu General Public
License (GPL); die Details dieser Lizenz können Sie in der
beiliegenden Datei COPYING nachlesen. Falls Sie diese nicht mit AS
erhalten haben, beschweren Sie sich bei demjenigen, von dem Sie AS
erhalten haben!
<P>
Kurz gesagt, beinhaltet die GPL folgende Punkte:
<UL>
<LI> Auf AS aufbauende Programme müssen ebenfalls der GPL
unterstehen;</LI>
<LI> Weiterverbreitung ausdrücklich erlaubt;</LI>
<LI> expliziter Haftungsausschluß für durch die Anwendung
dieses Programmes entstehende Schäden.</LI>
</UL>
...aber für die Details bitte ich wirklich, in den Originaltext
der GPL zu schauen!
<P>
Um eine möglichst schnelle Fehlerdiagnose und -korrektur zu
ermöglichen, bitte ich, Fehlerberichten folgende Angaben
beizufügen:
<UL>
<LI> Hardware:
<UL>
<LI> Prozessortyp (mit/ohne Koprozessor)</LI>
<LI> Speicherausbau</LI>
<LI> Grafikkarte</LI>
<LI> Festplatte und Typ deren Interfaces</LI>
</UL>
</LI>
<LI> Software:
<UL>
<LI> Betriebssystem (MS/DR/Novell-DOS, OS/2, Windows) und
Version</LI>
<LI> installierte speicherresidente Programme</LI>
<LI> benutzte Version von AS + Datum des EXE-Files</LI>
</UL>
</LI>
<LI> möglicht die Quelldatei, bei der der Fehler auftritt</LI>
</UL>
Zu erreichen bin ich folgendermaßen:
<UL>
<LI> per Post:
<DL COMPACT>
<DD> Alfred Arnold</DD>
<DD> Hirschgraben 29</DD>
<DD> 52062 Aachen</DD>
</DL>
</LI>
<LI> per E-Mail:<TT> alfred@ccac.rwth-aachen.de</TT></LI>
</UL>
Wer mir persönlich Fragen stellen will (und in der Nähe von
Aachen wohnt), kann dies mit hoher Wahrscheinlichkeit donnerstags von
20.00 bis 21.00 Uhr im Computerclub an der RWTH Aachen
(Eilfschornsteinstraße 16, Keller Philosophengebäude
Rückseite).
<P>
Von Telefonanrufen bitte ich abzusehen. Erstens, weil sich die
komplizierten Zusammenhänge am Telefon nur äußerst
schwer erörten lassen, und zweitens ist die Telekom schon reich
genug...
<P>
Die neueste Version von AS (DOS, DPMI, OS/2, C) findet sich auf
folgendem Server:
<PRE>
http://john.ccac.rwth-aachen.de:8000/as
</PRE>
oder auch kurz
<PRE>
http://www.alfsembler.de
</PRE>
Die Quellen der C-Version können weiterhin von folgendem Server
geholt werden:
<PRE>
sunsite.unc.edu
Verzeichnis pub/Linux/devel/lang/assemblers/asl-<version>.tar.gz
</PRE>
...und damit natürlich von jedem Sunsite-Spiegel der Welt!
<P>
Wer über keinen FTP-Zugang verfügt, kann den Assembler auch
von mir anfordern. Ich werde aber nur Anfragen beantworten, die einen
CD-Rohling und einen passenden, frankierten Rückumschlag
enthalten.<B> KEIN</B> Geld schicken!!!
<P>
So. Nach diesem unvermeidlichen Vorwort können wir wohl beruhigt
zur eigentlichen Anleitung schreiten:
<P>
<H2><A NAME="sect_1_2_">1.2. allgemeine Fähigkeiten des Assemblers</A></H2>
<P>
AS bietet im Gegensatz zu normalen Assemblern die Möglichkeit,
Code für völlig verschiedene Prozessoren zu erzeugen.
Momentan sind folgende Prozessorfamilien implementiert:
<UL>
<LI> Motorola 68000..68040,683xx inkl. Koprozessor und MMU</LI>
<LI> Motorola ColdFire</LI>
<LI> Motorola DSP5600x,DSP56300</LI>
<LI> Motorola/IBM MPC601/MPC505/PPC403</LI>
<LI> Motorola M-Core</LI>
<LI> Motorola 6800, 6805, 68HC08, 6809, 68(HC)11(K4), 68HC12, 68HC16
sowie Hitachi 6301</LI>
<LI> Hitachi 6309</LI>
<LI> Hitachi H8/300(H)</LI>
<LI> Hitachi H8/500</LI>
<LI> Hitachi SH7000/7600/7700</LI>
<LI> Rockwell 6502 und 65(S)C02</LI>
<LI> CMD 65816</LI>
<LI> Mitsubishi MELPS-740</LI>
<LI> Mitsubishi MELPS-7700</LI>
<LI> Mitsubishi MELPS-4500</LI>
<LI> Mitsubishi M16</LI>
<LI> Mitsubishi M16C</LI>
<LI> Intel 4004/4040</LI>
<LI> Intel MCS-48/41</LI>
<LI> Intel MCS-51/251, Dallas DS80C390</LI>
<LI> Intel MCS-96/196(Nx)/296</LI>
<LI> Intel 8080/8085</LI>
<LI> Intel i960</LI>
<LI> Signetics 8X30x</LI>
<LI> Philips XA</LI>
<LI> Atmel (Mega-)AVR</LI>
<LI> AMD 29K</LI>
<LI> Siemens 80C166/167</LI>
<LI> Zilog Z80, Z180, Z380</LI>
<LI> Zilog Z8, eZ8</LI>
<LI> Xilinx KCPSM ('PicoBlaze')</LI>
<LI> Toshiba TLCS-900(L)</LI>
<LI> Toshiba TLCS-90</LI>
<LI> Toshiba TLCS-870</LI>
<LI> Toshiba TLCS-47</LI>
<LI> Toshiba TLCS-9000</LI>
<LI> Microchip PIC16C54..16C57</LI>
<LI> Microchip PIC16C84/PIC16C64</LI>
<LI> Microchip PIC17C42</LI>
<LI> SGS-Thomson ST6</LI>
<LI> SGS-Thomson ST7</LI>
<LI> SGS-Thomson ST9</LI>
<LI> SGS-Thomson 6804</LI>
<LI> Texas Instruments TMS32010/32015</LI>
<LI> Texas Instruments TMS3202x</LI>
<LI> Texas Instruments TMS320C3x</LI>
<LI> Texas Instruments TMS320C20x/TMS320C5x</LI>
<LI> Texas Instruments TMS320C54x</LI>
<LI> Texas Instruments TMS320C6x</LI>
<LI> Texas Instruments TMS9900</LI>
<LI> Texas Instruments TMS7000</LI>
<LI> Texas Instruments TMS370xxx</LI>
<LI> Texas Instruments MSP430</LI>
<LI> National Semiconductor SC/MP</LI>
<LI> National Semiconductor INS807x</LI>
<LI> National Semiconductor COP8</LI>
<LI> National Semiconductor SC144xx</LI>
<LI> Fairchild ACE</LI>
<LI> NEC µPD78(C)1x</LI>
<LI> NEC µPD75xxx (alias 75K0)</LI>
<LI> NEC µPD78xxx (alias 78K0)</LI>
<LI> NEC µPD7720/7725</LI>
<LI> NEC µPD77230</LI>
<LI> Fujitsu F²MC8L</LI>
<LI> Fujitsu F²MC16L</LI>
<LI> Symbios Logic SYM53C8xx (ja, die kann man programmieren!)</LI>
<LI> Intersil CDP1802/1805</LI>
</UL>
in Arbeit / Planung / Überlegung :
<UL>
<LI> NEC 78K4</LI>
<LI> Intel 8008</LI>
<LI> Texas Instruments TMS320C54x</LI>
<LI> Analog Devices ADSP21xx</LI>
<LI> SGS-Thomson ST20</LI>
<LI> Texas Instruments TMS320C4x</LI>
<LI> Texas Instruments TMS320C8x</LI>
<LI> Toshiba TC9331</LI>
</UL>
Noch gesucht werden Unterlagen für:
<UL>
<LI> die ganze Palette der OKI-Controller</LI>
</UL>
ungeliebt, aber<I> doch</I> vorhanden :
<UL>
<LI> Intel 8086, 80186, NEC V30&V35 inkl. Koprozessor 8087</LI>
</UL>
Die Umschaltung des Codegenerators darf dabei auch mitten in der
Datei erfolgen, und das beliebig oft!
<P>
Der Grund für diese Flexibilität ist, daß AS eine
Vorgeschichte hat, die auch in der Versionsnummer deutlich wird: AS
ist als Erweiterung eines Makroassemblers für die
68000er-Familie entstanden. Auf besonderen Wunsch habe ich den
ursprünglichen Assembler um die Fähigkeit zur
Übersetzung von 8051-Mnemonics erweitert, und auf dem Weg
(Abstieg?!) vom 68000 zum 8051 sind eine Reihe anderer fast nebenbei
abgefallen...die restlichen Prozessoren wurden allesamt auf
Benutzeranfrage hin integriert. Zumindest beim
prozessorunabhängigen Kern kann man also getrost davon ausgehen,
daß er gut ausgetestet und von offensichtlichen Bugs frei ist.
Leider habe ich aber häufig mangels passender Hardware nicht die
Möglichkeit, einen neuen Codegenerator praktisch zu testen, so
daß bei Neuerungen Überraschungen nie ganz
auszuschließen sind. Das in Abschnitt <A
HREF="#ref_SectLicense">1.1</A> gesagte hat also schon seinen
Grund...
<P>
Diese Flexibilität bedingt ein etwas exotisches Codeformat,
für dessen Bearbeitung ich einige Tools beigelegt habe. Deren
Beschreibung findet sich in Abschnitt <A HREF="#ref_ChapTools">6</A>.
<P>
AS ist ein Makroassembler, d.h. dem Programmierer ist die
Möglichkeit gegeben, sich mittels Makros neue ,,Befehle'' zu
definieren. Zusätzlich beherrscht er die bedingte Assemblierung.
Labels in Makrorümpfen werden automatisch als lokal betrachtet.
<P>
Symbole können für den Assembler sowohl Integer-, String-
als auch Gleitkommawerte haben. Diese werden --- wie Zwischergebnisse
bei Formeln --- mit einer Breite von 32 Bit für Integerwerte,
80/64 Bit für Gleitkommawerte und 255 Zeichen für Strings
gespeichert. Für eine Reihe von Mikrokontrollern besteht die
Möglichkeit, durch Segmentbildung die Symbole bestimmten Klassen
zuzuordnen. Dem Assembler kann man auf diese Weise die --- begrenzte
--- Möglichkeit geben, Zugriffe in falsche Adreßräume
zu erkennen.
<P>
Der Assembler kennt keine expliziten Beschränkungen bzgl.
Verschachtelungstiefe von Includefiles oder Makros, eine Grenze
bildet lediglich die durch den Hauptspeicher beschränkte
Rekursionstiefe. Ebenso gibt es keine Grenze für die
Symbollänge, diese wird nur durch die maximale Zeilenlänge
begrenzt.
<P>
Ab Version 1.38 ist AS ein Mehrpass-Assembler. Dieser hochtrabende
Begriff bedeutet nicht mehr, als das die Anzahl der Durchgänge
durch die Quelltexte nicht mehr zwei sein muß. Sind keine
Vorwärtsreferenzen im Quellcode enthalten, so kommt AS mit einem
Durchgang aus. Stellt sich dagegen im zweiten Durchgang heraus,
daß ein Befehl mit einer kürzeren oder längeren
Kodierung benutzt werden muß, so wird ein dritter (vierter,
fünfter...) Durchgang eingelegt, um alle Symbolreferenzen
richtig zu stellen. Mehr steckt hinter dem Begriff ,,Multipass''
nicht...er wird im weiteren Verlauf dieser Anleitung deswegen auch
nicht mehr auftauchen.
<P>
Nach soviel Lobhudelei ein dicker Wermutstropfen: AS erzeugt keinen
linkfähigen Code. Eine Erweiterung um einen Linker wäre mit
erheblichem Aufwand verbunden und ist momentan nicht in Planung.
<P>
Wer einen Blick in die Quellen von AS werfen will, besorge sich
einfach die Unix-Version von AS, die als Quelltext zum
Selberübersetzen kommt. Die Quellen sind mit Sicherheit nicht in
einem Format, daß das Verständnis möglichst leicht
macht - an vielen Stellen schaut noch der originale Pascal-Quellcode
heraus, und ich teile einige häufig vertretene Ansichten
über 'guten' C-Stil nicht...
<P>
<H2><A NAME="sect_1_3_">1.3. Unterstützte Plattformen</A></H2>
<P>
Obwohl AS als ein reines DOS-Programm angefangen hat, stehen auch
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -