⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 as_de.html

📁 万能汇编工具
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<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. &Auml;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&auml;ngigkeiten</A></H3>
<P><H3><A HREF="#sect_I_3_">I.3. Systemunabh&auml;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&auml;tzliche Module f&uuml;r die Hilfsprogramme</A></H4>
<P><H3><A HREF="#sect_I_4_">I.4. W&auml;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&auml;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&uuml;ber informieren m&ouml;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&auml;ren, noch erl&auml;utert
sie die Architektur bestimmter Prozessoren. Im Literaturverzeichnis
habe ich weiterf&uuml;hrende Literatur aufgelistet, die bei der
Implementation der einzelnen Codegeneratoren ma&szlig;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&ouml;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&uuml;ssen ebenfalls der GPL
    unterstehen;</LI>
<LI> Weiterverbreitung ausdr&uuml;cklich erlaubt;</LI>
<LI> expliziter Haftungsausschlu&szlig; f&uuml;r durch die Anwendung
    dieses Programmes entstehende Sch&auml;den.</LI>
</UL>
...aber f&uuml;r die Details bitte ich wirklich, in den Originaltext
der GPL zu schauen!
<P>
Um eine m&ouml;glichst schnelle Fehlerdiagnose und -korrektur zu
erm&ouml;glichen, bitte ich, Fehlerberichten folgende Angaben
beizuf&uuml;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&ouml;glicht die Quelldatei, bei der der Fehler auftritt</LI>
</UL>
Zu erreichen bin ich folgenderma&szlig;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&ouml;nlich Fragen stellen will (und in der N&auml;he von
Aachen wohnt), kann dies mit hoher Wahrscheinlichkeit donnerstags von
20.00 bis 21.00 Uhr im Computerclub an der RWTH Aachen
(Eilfschornsteinstra&szlig;e 16, Keller Philosophengeb&auml;ude
R&uuml;ckseite).
<P>
Von Telefonanrufen bitte ich abzusehen. Erstens, weil sich die
komplizierten Zusammenh&auml;nge am Telefon nur &auml;u&szlig;erst
schwer er&ouml;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&ouml;nnen weiterhin von folgendem Server
geholt werden:
<PRE>

 sunsite.unc.edu
   Verzeichnis pub/Linux/devel/lang/assemblers/asl-&lt;version&gt;.tar.gz

</PRE>
...und damit nat&uuml;rlich von jedem Sunsite-Spiegel der Welt!
<P>
Wer &uuml;ber keinen FTP-Zugang verf&uuml;gt, kann den Assembler auch
von mir anfordern. Ich werde aber nur Anfragen beantworten, die einen
CD-Rohling und einen passenden, frankierten R&uuml;ckumschlag
enthalten.<B> KEIN</B> Geld schicken!!!
<P>
So. Nach diesem unvermeidlichen Vorwort k&ouml;nnen wir wohl beruhigt
zur eigentlichen Anleitung schreiten:
<P>

<H2><A NAME="sect_1_2_">1.2. allgemeine F&auml;higkeiten des Assemblers</A></H2>
<P>
AS bietet im Gegensatz zu normalen Assemblern die M&ouml;glichkeit,
Code f&uuml;r v&ouml;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 &micro;PD78(C)1x</LI>
<LI> NEC &micro;PD75xxx (alias 75K0)</LI>
<LI> NEC &micro;PD78xxx (alias 78K0)</LI>
<LI> NEC &micro;PD7720/7725</LI>
<LI> NEC &micro;PD77230</LI>
<LI> Fujitsu F&sup2;MC8L</LI>
<LI> Fujitsu F&sup2;MC16L</LI>
<LI> Symbios Logic SYM53C8xx (ja, die kann man programmieren!)</LI>
<LI> Intersil CDP1802/1805</LI>
</UL>
in Arbeit / Planung / &Uuml;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&uuml;r:
<UL>
<LI> die ganze Palette der OKI-Controller</LI>
</UL>
ungeliebt, aber<I> doch</I> vorhanden :
<UL>
<LI> Intel 8086, 80186, NEC V30&amp;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&uuml;r diese Flexibilit&auml;t ist, da&szlig; AS eine
Vorgeschichte hat, die auch in der Versionsnummer deutlich wird: AS
ist als Erweiterung eines Makroassemblers f&uuml;r die
68000er-Familie entstanden. Auf besonderen Wunsch habe ich den
urspr&uuml;nglichen Assembler um die F&auml;higkeit zur
&Uuml;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&auml;ngigen Kern kann man also getrost davon ausgehen,
da&szlig; er gut ausgetestet und von offensichtlichen Bugs frei ist.
Leider habe ich aber h&auml;ufig mangels passender Hardware nicht die
M&ouml;glichkeit, einen neuen Codegenerator praktisch zu testen, so
da&szlig; bei Neuerungen &Uuml;berraschungen nie ganz
auszuschlie&szlig;en sind. Das in Abschnitt <A
HREF="#ref_SectLicense">1.1</A> gesagte hat also schon seinen
Grund...
<P>
Diese Flexibilit&auml;t bedingt ein etwas exotisches Codeformat,
f&uuml;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&ouml;glichkeit gegeben, sich mittels Makros neue ,,Befehle'' zu
definieren. Zus&auml;tzlich beherrscht er die bedingte Assemblierung.
Labels in Makror&uuml;mpfen werden automatisch als lokal betrachtet.
<P>
Symbole k&ouml;nnen f&uuml;r den Assembler sowohl Integer-, String-
als auch Gleitkommawerte haben. Diese werden --- wie Zwischergebnisse
bei Formeln --- mit einer Breite von 32 Bit f&uuml;r Integerwerte,
80/64 Bit f&uuml;r Gleitkommawerte und 255 Zeichen f&uuml;r Strings
gespeichert. F&uuml;r eine Reihe von Mikrokontrollern besteht die
M&ouml;glichkeit, durch Segmentbildung die Symbole bestimmten Klassen
zuzuordnen. Dem Assembler kann man auf diese Weise die --- begrenzte
--- M&ouml;glichkeit geben, Zugriffe in falsche Adre&szlig;r&auml;ume
zu erkennen.
<P>
Der Assembler kennt keine expliziten Beschr&auml;nkungen bzgl.
Verschachtelungstiefe von Includefiles oder Makros, eine Grenze
bildet lediglich die durch den Hauptspeicher beschr&auml;nkte
Rekursionstiefe. Ebenso gibt es keine Grenze f&uuml;r die
Symboll&auml;nge, diese wird nur durch die maximale Zeilenl&auml;nge
begrenzt.
<P>
Ab Version 1.38 ist AS ein Mehrpass-Assembler. Dieser hochtrabende
Begriff bedeutet nicht mehr, als das die Anzahl der Durchg&auml;nge
durch die Quelltexte nicht mehr zwei sein mu&szlig;. Sind keine
Vorw&auml;rtsreferenzen im Quellcode enthalten, so kommt AS mit einem
Durchgang aus. Stellt sich dagegen im zweiten Durchgang heraus,
da&szlig; ein Befehl mit einer k&uuml;rzeren oder l&auml;ngeren
Kodierung benutzt werden mu&szlig;, so wird ein dritter (vierter,
f&uuml;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&auml;higen Code. Eine Erweiterung um einen Linker w&auml;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&uuml;bersetzen kommt. Die Quellen sind mit Sicherheit nicht in
einem Format, da&szlig; das Verst&auml;ndnis m&ouml;glichst leicht
macht - an vielen Stellen schaut noch der originale Pascal-Quellcode
heraus, und ich teile einige h&auml;ufig vertretene Ansichten
&uuml;ber 'guten' C-Stil nicht...
<P>

<H2><A NAME="sect_1_3_">1.3. Unterst&uuml;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 + -