home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / reass / tutorium / tutorium1.txt < prev    next >
Text File  |  1997-08-06  |  8KB  |  148 lines

  1. Tutorium1 zum In_Go Reassembler
  2.  - Starten Sie In_Go
  3.  - Mit Amiga+"l" den Laderequester aufrufen
  4.    Als Quelle sollte  File eingeschaltet sein.
  5.  - Klicken Sie `Lade...` an
  6.    Es erscheint ein Requester `Lade ausführbares File/Objectfile`
  7.  - Klicken Sie Das Fileauswahl-Gadget hinter Lade an und wählen Sie Tutorium1 an
  8.    Bestätigen Sie den Asl Requester mit `Ok`
  9.    Als Projectname sollte nun Tutorium1 erscheinen
  10.  - Bestätigen Sie mit `Ok`
  11.    Der `Lade ausführbares File/Objectfile` Requester verschwindet, der Ladevorgang hat begonnen,
  12.    und ist sehr schnell beendet.
  13.    Die Quell-Auswahl Gadgets und das `Lade...` Gadget werden nun Ghosted dargestellt.
  14.   -Zur Übung Klicken Sie auf Data in Der Scroll-Box
  15.    Es erscheint ein Requester der Sie auffordert das Segment zu definieren.
  16.   -Sie Ändern jedoch nichts und klicken Cancel an
  17.    Der Requester verschwindet
  18.   -Klicken Sie nun `Ok` im Laderequester an
  19.    Der Lade- Requester verschwindet.
  20.    Es erscheint nun unaufgefordert der `Reassembler preferences` Requester
  21.   -Klicken Sie `Suche indirekte Basen` an
  22.    Es erscheint eine Zeile in der Scrollbox
  23.   -Klicken Sie nun `Suche Link-Module` an
  24.    Der Anzeigemodus hat sich automatisch geändert er ist nun `Pseudo a0-a6`
  25.    Es erscheint wiederum eine Zeile in der Scrollbox, die aber einen anderen Aufbau hat
  26.    als die Zeile vorher.
  27.   -Verlassen Sie den Requester mit `Ok`
  28.    Der Requester verschwindet, die Hauptanzeige wird voll sichtbar.
  29.    Der Text ist nun überwiegend gelb es sind keine Library-aufrufe dekodiert
  30.   -Drücken Sie nun `d`
  31.    Die Code-interpretation verschwindet es wird nun ein Data-ähnlicher Text gezeigt.
  32.    Dieser Text entspricht dem vorher gesehenen Code diesmal nur als Data interpretiert.
  33.   -Drücken Sie nochmals `d`
  34.    Nun erscheint der vorher gesehene Assemblertext wieder.
  35.   -Drücken Sie nun `z` einmal.
  36.    Auf der linken Seite erscheint nun die absolute Adresse der geladenen Quelle
  37.   -Drücken Sie nun `z` nocheinmal
  38.    Auf der linken Seite erscheint nun die relative Adresse der geladenen Quelle
  39.   -Drücken Sie nun `z` nocheinmal
  40.    Jegliche Adressangabe auf der linken Seite verschwindet wieder.
  41.   -Starten Sie nun den Reassembler mit `Space` also der Leertaste.
  42.    Die ersten beiden Zeilen erscheinen nun Schwarz und B=1 also 1 Codebereich ist entdeckt.
  43.   -Drücken Sie nun wieder `d`
  44.    Die ersten beiden Zeilen sind unverändert der Rest wird wiederum zu Data
  45.   -Mit Hilfe der Kursortaste bewegen Sie die aktuelle Zeile, auf AL_0_4
  46.   -Drücken Sie nun Taste `Amiga`+`j`
  47.    Fast der gesammte Inhalt von Segment 0 ist reassembliert worden.
  48.    die Aktuelle Zeile bleibt hinter dem reassemblierten Bereich stehen
  49.   -Drücken Sie nun `0`
  50.    Hier wird Marke `0` aufgerufen, da Sie aber bisher unbelegt ist wird der Anfang
  51.    von Segment 0 angezeigt.
  52.    Die absoluten Adressen im Operandenfeld sind nun verschwunden
  53.   -Drücken Sie nun Amiga+shift+`$`
  54.    In_Go liest nun alle amigatypischen Namen des Programmes ein..
  55.    In der neunten Zeile erscheint nun `lea dosname(A4),D1`
  56.   -Sehen Sie Sich die ersten Zeilen an. .
  57.   -Schalten Sie mit `z` auf relative Zeilenadressanzeige (zweimal drücken !)
  58.    Jetzt sollte die Zeilenadressanzeige `+$xxx` sichtbar sein.
  59.    In Zeile `+$E` wird die ExecBase in eine Variable geschoben,
  60.    soviel sollten Sie erkennen ...
  61.   -Klicken Sie die Variable `L_1_86(A4)` an . . .
  62.    Es erscheint der `Reassembler Hilfe` Requester
  63.   -Klicken Sie das Stringgadget im Bereich `Gewähltes Label` an.
  64.   -Geben Sie `ExecBase` in genau dieser schreibweise ein, mit Return abschliesen.
  65.    Stringgadgets in In_Go müssen immer mit Return verlassen werden !
  66.   -Klicken Sie `Ok` an
  67.    Jetzt erscheint die Hauptanzeige wieder, der symbolische Processor kann nun
  68.    einige Library-Aufrufe erkennen.
  69.   -Mit Hilfe der Kursortasten gehen Sie nun  nach unten in Zeile `+$64`
  70.    In Zeile `+$5C` - `+$68` kann man das Öffnen der Utility Library erkennen
  71.    In Zeile `+$6C` wird die UtilityBase in eine lokale Variable abgespeichert.
  72.   -Klicken Sie pS0_0(A5) an
  73.    Es erscheint der `Reassembler Hilfe` Requester
  74.   -Klicken Sie das Stringgadget im Bereich `Gewähltes Label` an.
  75.   -Geben Sie `UtilityBase` in genau dieser schreibweise ein, mit Return abschliesen.
  76.   -Verlassen Sie den Reassemblerhilferequester mit der `Esc` Taste
  77.    Nun kann der symbolische Processor auch diesen Aufruf dekodieren.
  78.    An der Zeilenfärbung kann man erkennen Das es sich um einen Aufruf ab Kick 3.0 handelt.
  79.   -Fahren Sie nun mit der Kursortaste bis ans Segmentende
  80.    sie erkennen anhand der grün-schwarzen Zeile das hier eine Tabellen existiert
  81.    Da sie noch nicht automatisch eingelesen ist vermuten Sie richtig
  82.    >Es handelt sich hier um eine Tabelle die In_Go nicht automatisch einliest<
  83.   -Fahren Sie mit dem Zeilenkursor auf Label `L_0_A4:`
  84.   -Drücken Sie jetzt `t`
  85.    Jetzt erscheint ein Requester mit vielen Einstell-Möglichkeiten
  86.   -Klicken Sie Schalter `Der Tabellen Start` an
  87.    In dem Stringausgabegadget dahinter sollte jetzt `L_0_A4` erscheinen.
  88.   -Verlassen Sie den Requester mit `Ok`
  89.  
  90. Den Folgenden Vorgang eventuell wiederhohlen !
  91.   -Fahren Sie nun mit dem Zeilenkursor auf `+$AC`
  92.    Wenn sie `+$AC` nicht finden nehmen Sie den naechsten kleineren Wert !
  93.   -Drücken Sie jetzt `t`
  94.    Jetzt erscheint der Tabelleneinleserequester wieder
  95.   -Klicken Sie Schalter `Das Tabellen Ende` an
  96.    In dem Stringausgabegadget dahinter erscheint jetzt die Absolute Adresse.
  97.    An dieser Stelle befindet sich ja noch kein Label.
  98.   -Stellen Sie am Gadget links oben "(@):   {start+word[@]}: @+@+distance" ein
  99.    Die  Distanz sollte bereits auf 2 , "{}=" sollte `Sprunglabel` zeigen
  100.   -Starten Sie das Einlesen der Tabelle mit `Lese Tabelle ein`
  101.   -Verlassen Sie den Requester mit `Ok`
  102.    in der Hauptanzeige erscheint nun die Tabelle
  103. Wenn Sie vorher +$AC` nicht gefunden haben Zurück zum Absatz
  104.   -Drücken Sie nun `Space` (Leertaste)
  105.    Es ertönnt mehrfach `Beep` das deutet auf einen Fehler hin !
  106.   -Drücken Sie darum Taste `e`
  107.    Taste `e` zeigt die Fehler einige dc.w s
  108.   -Schalten sie im Processormenu auf 68020.
  109.    Unsere Vermutung war richtig der Fehler war gar kein Fehler es handelte
  110.    sich um nur für den 68020 er Processor lauffähigen Code
  111.    Da In_Go beim `Fehler` die Reassemblierung an dieser Stelle abbricht haben wir dort
  112.    jetzt unerkannter Code
  113.   -Fahren Sie mit dem Zeilenkursor auf das Zeilenlabel darüber (+$B8)
  114.   -Wählen Sie im Edit-Menü `Mache Code zu Data von AL an`
  115.    Jetzt werden 3 Zeilen wieder überwiegend Gelb, Sie sind In_Go intern `DATA`
  116.    Darum müssen wir erneut an dieser Stelle reassemblieren.
  117.   -Gehen Sie Mit dem Zeilenkursor auf (+$B8)
  118.   -Drücken Sie Amiga + `j`
  119.    Nun hat In_Go diese Stelle bearbeitet, Sie ist als Code richtig erkannt
  120.   -Bringen Sie Nun Zeile  `+$9A` -`$A2 in die Anzeige (durch Kursor oder Scrollbalken )
  121.   -Drücken Sie nun Shift + `L`
  122.    Mit dieser Tastenfolge können Libraryaufrufe im sichtbaren Bereich automatisch benannt
  123.    werden.
  124.    In Zeile `+$9A` erscheint der Name `CloseLibrary_I`  er wurde gelernt !
  125.   -Bringen Sie Zeile  +$BA bis +$B6 in die Anzeige
  126.   -Wählen Sie `F10` (Die Funktionstaste)
  127.   -Klicken Sie alle Möglichkeiten ein
  128.   -Verlassen Sie den Requester mit OK
  129.    Nun können wir einige Optimierungen richtung 68020 betrachten.
  130.   -Durch drücken von `o` kann die Optimierung `getoggled` werden.
  131.   -Wählen Sie nun `Erzeuge lokale Label` im Edit-Menu an.
  132.   -Es erscheint ein roter Hinweis der jedoch bald wieder verschwindet.
  133.    Es werden nun lokale Label angezeigt;
  134.    Warum  sind die Label ab Zeile +$C4 nicht lokal geworden ?
  135.    Ein kleiner Trick von mir: in Segment 1 befindet sich ein Verweis
  136.    auf Label +$C4 ;dies wurde von In_Go richtig erkannt.
  137.   -Erzeugen Sie Nun durch Anwahl von `Speichere Textfile` im
  138.    Aktion-Menü ein Assembler-Textfile
  139.   - Erzeugen Sie Durch Anwahl von `Speichere Amigaguidefile` im
  140.    Aktion-Menü ein Amigaguidefile des Tutoriums
  141.   -Wählen Sie `Speichere ausführbares File`
  142.    Hier können Sie je nach Wunsch das File ausführbar, mit Dreloc_32 Units.
  143.    und oder mit den gefundenen Namen abspeichern.
  144.    der Name wird mit `q` erweitert.
  145.  
  146.    Ende von Tutorium1    
  147.  
  148.