home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
coders
/
reass
/
tutorium
/
tutorium1.txt
< prev
next >
Wrap
Text File
|
1997-08-06
|
8KB
|
148 lines
Tutorium1 zum In_Go Reassembler
- Starten Sie In_Go
- Mit Amiga+"l" den Laderequester aufrufen
Als Quelle sollte File eingeschaltet sein.
- Klicken Sie `Lade...` an
Es erscheint ein Requester `Lade ausführbares File/Objectfile`
- Klicken Sie Das Fileauswahl-Gadget hinter Lade an und wählen Sie Tutorium1 an
Bestätigen Sie den Asl Requester mit `Ok`
Als Projectname sollte nun Tutorium1 erscheinen
- Bestätigen Sie mit `Ok`
Der `Lade ausführbares File/Objectfile` Requester verschwindet, der Ladevorgang hat begonnen,
und ist sehr schnell beendet.
Die Quell-Auswahl Gadgets und das `Lade...` Gadget werden nun Ghosted dargestellt.
-Zur Übung Klicken Sie auf Data in Der Scroll-Box
Es erscheint ein Requester der Sie auffordert das Segment zu definieren.
-Sie Ändern jedoch nichts und klicken Cancel an
Der Requester verschwindet
-Klicken Sie nun `Ok` im Laderequester an
Der Lade- Requester verschwindet.
Es erscheint nun unaufgefordert der `Reassembler preferences` Requester
-Klicken Sie `Suche indirekte Basen` an
Es erscheint eine Zeile in der Scrollbox
-Klicken Sie nun `Suche Link-Module` an
Der Anzeigemodus hat sich automatisch geändert er ist nun `Pseudo a0-a6`
Es erscheint wiederum eine Zeile in der Scrollbox, die aber einen anderen Aufbau hat
als die Zeile vorher.
-Verlassen Sie den Requester mit `Ok`
Der Requester verschwindet, die Hauptanzeige wird voll sichtbar.
Der Text ist nun überwiegend gelb es sind keine Library-aufrufe dekodiert
-Drücken Sie nun `d`
Die Code-interpretation verschwindet es wird nun ein Data-ähnlicher Text gezeigt.
Dieser Text entspricht dem vorher gesehenen Code diesmal nur als Data interpretiert.
-Drücken Sie nochmals `d`
Nun erscheint der vorher gesehene Assemblertext wieder.
-Drücken Sie nun `z` einmal.
Auf der linken Seite erscheint nun die absolute Adresse der geladenen Quelle
-Drücken Sie nun `z` nocheinmal
Auf der linken Seite erscheint nun die relative Adresse der geladenen Quelle
-Drücken Sie nun `z` nocheinmal
Jegliche Adressangabe auf der linken Seite verschwindet wieder.
-Starten Sie nun den Reassembler mit `Space` also der Leertaste.
Die ersten beiden Zeilen erscheinen nun Schwarz und B=1 also 1 Codebereich ist entdeckt.
-Drücken Sie nun wieder `d`
Die ersten beiden Zeilen sind unverändert der Rest wird wiederum zu Data
-Mit Hilfe der Kursortaste bewegen Sie die aktuelle Zeile, auf AL_0_4
-Drücken Sie nun Taste `Amiga`+`j`
Fast der gesammte Inhalt von Segment 0 ist reassembliert worden.
die Aktuelle Zeile bleibt hinter dem reassemblierten Bereich stehen
-Drücken Sie nun `0`
Hier wird Marke `0` aufgerufen, da Sie aber bisher unbelegt ist wird der Anfang
von Segment 0 angezeigt.
Die absoluten Adressen im Operandenfeld sind nun verschwunden
-Drücken Sie nun Amiga+shift+`$`
In_Go liest nun alle amigatypischen Namen des Programmes ein..
In der neunten Zeile erscheint nun `lea dosname(A4),D1`
-Sehen Sie Sich die ersten Zeilen an. .
-Schalten Sie mit `z` auf relative Zeilenadressanzeige (zweimal drücken !)
Jetzt sollte die Zeilenadressanzeige `+$xxx` sichtbar sein.
In Zeile `+$E` wird die ExecBase in eine Variable geschoben,
soviel sollten Sie erkennen ...
-Klicken Sie die Variable `L_1_86(A4)` an . . .
Es erscheint der `Reassembler Hilfe` Requester
-Klicken Sie das Stringgadget im Bereich `Gewähltes Label` an.
-Geben Sie `ExecBase` in genau dieser schreibweise ein, mit Return abschliesen.
Stringgadgets in In_Go müssen immer mit Return verlassen werden !
-Klicken Sie `Ok` an
Jetzt erscheint die Hauptanzeige wieder, der symbolische Processor kann nun
einige Library-Aufrufe erkennen.
-Mit Hilfe der Kursortasten gehen Sie nun nach unten in Zeile `+$64`
In Zeile `+$5C` - `+$68` kann man das Öffnen der Utility Library erkennen
In Zeile `+$6C` wird die UtilityBase in eine lokale Variable abgespeichert.
-Klicken Sie pS0_0(A5) an
Es erscheint der `Reassembler Hilfe` Requester
-Klicken Sie das Stringgadget im Bereich `Gewähltes Label` an.
-Geben Sie `UtilityBase` in genau dieser schreibweise ein, mit Return abschliesen.
-Verlassen Sie den Reassemblerhilferequester mit der `Esc` Taste
Nun kann der symbolische Processor auch diesen Aufruf dekodieren.
An der Zeilenfärbung kann man erkennen Das es sich um einen Aufruf ab Kick 3.0 handelt.
-Fahren Sie nun mit der Kursortaste bis ans Segmentende
sie erkennen anhand der grün-schwarzen Zeile das hier eine Tabellen existiert
Da sie noch nicht automatisch eingelesen ist vermuten Sie richtig
>Es handelt sich hier um eine Tabelle die In_Go nicht automatisch einliest<
-Fahren Sie mit dem Zeilenkursor auf Label `L_0_A4:`
-Drücken Sie jetzt `t`
Jetzt erscheint ein Requester mit vielen Einstell-Möglichkeiten
-Klicken Sie Schalter `Der Tabellen Start` an
In dem Stringausgabegadget dahinter sollte jetzt `L_0_A4` erscheinen.
-Verlassen Sie den Requester mit `Ok`
Den Folgenden Vorgang eventuell wiederhohlen !
-Fahren Sie nun mit dem Zeilenkursor auf `+$AC`
Wenn sie `+$AC` nicht finden nehmen Sie den naechsten kleineren Wert !
-Drücken Sie jetzt `t`
Jetzt erscheint der Tabelleneinleserequester wieder
-Klicken Sie Schalter `Das Tabellen Ende` an
In dem Stringausgabegadget dahinter erscheint jetzt die Absolute Adresse.
An dieser Stelle befindet sich ja noch kein Label.
-Stellen Sie am Gadget links oben "(@): {start+word[@]}: @+@+distance" ein
Die Distanz sollte bereits auf 2 , "{}=" sollte `Sprunglabel` zeigen
-Starten Sie das Einlesen der Tabelle mit `Lese Tabelle ein`
-Verlassen Sie den Requester mit `Ok`
in der Hauptanzeige erscheint nun die Tabelle
Wenn Sie vorher +$AC` nicht gefunden haben Zurück zum Absatz
-Drücken Sie nun `Space` (Leertaste)
Es ertönnt mehrfach `Beep` das deutet auf einen Fehler hin !
-Drücken Sie darum Taste `e`
Taste `e` zeigt die Fehler einige dc.w s
-Schalten sie im Processormenu auf 68020.
Unsere Vermutung war richtig der Fehler war gar kein Fehler es handelte
sich um nur für den 68020 er Processor lauffähigen Code
Da In_Go beim `Fehler` die Reassemblierung an dieser Stelle abbricht haben wir dort
jetzt unerkannter Code
-Fahren Sie mit dem Zeilenkursor auf das Zeilenlabel darüber (+$B8)
-Wählen Sie im Edit-Menü `Mache Code zu Data von AL an`
Jetzt werden 3 Zeilen wieder überwiegend Gelb, Sie sind In_Go intern `DATA`
Darum müssen wir erneut an dieser Stelle reassemblieren.
-Gehen Sie Mit dem Zeilenkursor auf (+$B8)
-Drücken Sie Amiga + `j`
Nun hat In_Go diese Stelle bearbeitet, Sie ist als Code richtig erkannt
-Bringen Sie Nun Zeile `+$9A` -`$A2 in die Anzeige (durch Kursor oder Scrollbalken )
-Drücken Sie nun Shift + `L`
Mit dieser Tastenfolge können Libraryaufrufe im sichtbaren Bereich automatisch benannt
werden.
In Zeile `+$9A` erscheint der Name `CloseLibrary_I` er wurde gelernt !
-Bringen Sie Zeile +$BA bis +$B6 in die Anzeige
-Wählen Sie `F10` (Die Funktionstaste)
-Klicken Sie alle Möglichkeiten ein
-Verlassen Sie den Requester mit OK
Nun können wir einige Optimierungen richtung 68020 betrachten.
-Durch drücken von `o` kann die Optimierung `getoggled` werden.
-Wählen Sie nun `Erzeuge lokale Label` im Edit-Menu an.
-Es erscheint ein roter Hinweis der jedoch bald wieder verschwindet.
Es werden nun lokale Label angezeigt;
Warum sind die Label ab Zeile +$C4 nicht lokal geworden ?
Ein kleiner Trick von mir: in Segment 1 befindet sich ein Verweis
auf Label +$C4 ;dies wurde von In_Go richtig erkannt.
-Erzeugen Sie Nun durch Anwahl von `Speichere Textfile` im
Aktion-Menü ein Assembler-Textfile
- Erzeugen Sie Durch Anwahl von `Speichere Amigaguidefile` im
Aktion-Menü ein Amigaguidefile des Tutoriums
-Wählen Sie `Speichere ausführbares File`
Hier können Sie je nach Wunsch das File ausführbar, mit Dreloc_32 Units.
und oder mit den gefundenen Namen abspeichern.
der Name wird mit `q` erweitert.
Ende von Tutorium1