amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Assembler-Interpreter [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

18.12.2002, 22:48 Uhr

Schofl
Posts: 20
Nutzer
Servus!
Seit etlichen Jahren programmiere ich in Assembler und da gab es auch schon viele Experten, die meinten, man könne nicht effizient in Assembler programmieren, weil C einfacher zu lesen sei usw. (bla bla). Mit meinen Macros kann ich wie in einer Hochsprache schreiben und habe trotzdem den Prozessor im Würgegriff.

Beim Entwanzen eines Assemblerprogramms allerdings tut man sich schwer trotz Debugger. Wer weiß, ob es ein Laufzeitsystem ala Amiga-BASIC gibt, nur für Assembler? Es müßte allerdings selbst in Assembler geschrieben sein, da ja zeitkritische Routinen des zu prüfenden Codes nicht zu sehr verzögert werden sollen. Eine Variablenanzeige dazu wäre nicht schlecht und ich muß jederzeit den Ablauf meines Codes stoppen können. Z.B. 20 Befehle möchte ich ausführen lassen oder solange Ablauf, bis d7 auf $c0dedbad hochgezählt hat und gleichzeitig Speicherstelle soundso seinen Wert verändert... dann kehrt der Interpreter zurück. Wer kennt sich da aus?

Gruß, Wolfgang

[ - Antworten - Zitieren - Direktlink - ]

19.12.2002, 11:49 Uhr

Beeblebrox
Posts: 723
Nutzer
Der ASMOne und der andere auf ASMOne aufbauende ASMxxx ?
haben doch nen eingebauten Debugger.

[ - Antworten - Zitieren - Direktlink - ]

19.12.2002, 14:56 Uhr

g0ldm0m0
Posts: 122
Nutzer
Also alle deine Wünsche werden wohl nicht erfüllbar sein.
Allerdings sollte mit einen Symbolhunk,
schonmal die Variablen/Symbole im Debugger sichtbar sein.
Ich kann ich nur den OMA-Assembler mit seinem Debugger empfehlen
(der kann sehr viele Dinge (Variablenanzeige,Codeänderbar,keine Probleme mit fpu#s/mmu's,...)).
Der OMADebugger ist wirklich genial, habe nie einen besseren gefunden.

P.s.: Weiss jemand wo man den OMA3.0 herbekommt, ich habe nur die Version2.0 (irgendwann mal für 150DM im "Buchladen" (kein Witz) gekauft).

mfg goldmomo


[ - Antworten - Zitieren - Direktlink - ]

19.12.2002, 16:10 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Schofl:
Beim Entwanzen eines Assemblerprogramms allerdings tut man sich schwer trotz Debugger. Wer weiß, ob es ein Laufzeitsystem ala Amiga-BASIC gibt, nur für Assembler? Es müßte allerdings selbst in Assembler geschrieben sein, da ja zeitkritische Routinen des zu prüfenden Codes nicht zu sehr verzögert werden sollen. Eine Variablenanzeige dazu wäre nicht schlecht und ich muß jederzeit den Ablauf meines Codes stoppen können. Z.B. 20 Befehle möchte ich ausführen lassen oder solange Ablauf, bis d7 auf $c0dedbad hochgezählt hat und gleichzeitig Speicherstelle soundso seinen Wert verändert... dann kehrt der Interpreter zurück. Wer kennt sich da aus?


Das was Du da aufzählst, gehört zu den normalen Funktionen eines Debuggers. Jeder vernünftige Debugger kann das. Es wird nicht interpretiert, sondern mit trace-Funktionen der CPU durchgeführt, ist also deutlich schneller als BASIC.
Übrigends kannst Du all diese beschriebenen Sachen mit AmigaBASIC nicht machen. Ich glaube Dir gern, daß Du den Prozessor im Würgegriff hast, daß es effizient ist allerdings weniger.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

11.01.2003, 09:04 Uhr

Schofl
Posts: 20
Nutzer
Hallo nochmals beisammen!
Danke für alle Eure Antworten. Das OMA-Paket in V2.05 habe ich mir besorgt und bin davon begeistert. Allerdings habe ich keine Bedienungsanleitung und so scheiden die meisten der Funktionen aus. Bedauerlicherweise nennt mir der Debugger nicht den Variablennamen, sondern nur dessen rel. Adresse. Ich programmiere immer so, daß ich einen Variablenpuffer entweder mit AllocMem() oder als BSS-Hunk besorge, den ich dann mit der d16(ax)-Adressierung benutze.
Ich schreibe z.B.:
include bla, bla
STRUCTURE Var,0
APTR dosbase
BPTR Datei1
...
LABEL Var_Länge
lea Variablenpuffer,a5
Funktion dosbase(a5),OpenLibrary_,#dosname,#30
beq kein_dos
Funktion Datei1(a5),Open_,#Dateiname1,#MODE_OLDFILE
...
...
Variablenpuffer: ds.b Var_Länge
END

Das Makro Funktion ist eine meiner Erweiterungen, um in Assembler wie in einer Hochsprache zu schreiben. Wer will, kann sich meine Makros ja 'mal näher ansehen. Nun sagt mir der OMA-Debugger aber
move.l d0,4(a5)
und nicht
move.l d0,Datei1(a5)
wenn die Open()-Routine ausgeführt wurde. Gibt es da einen Kniff, um den Debugger dazu zu überreden, es doch zu tun - beispielsweise ihm den Quellcode gleich mitzuübergeben? Bislang war ich erfolglos.
Ein weiteres Problem gibt es mit OMA, da ich endlich meine Makros erweitern will. So soll es möglich sein,
STRUCTURE Var,0
APTR dosbase
STRUCT Array,2*4 ;zwei Argumente
...
Funktion RDArgs(a5),ReadArgs_,#Template,#Array(a5),#0
zu schreiben. Latürnich gibt es keine Adressierungsart
move.l #Array(a5),d2
deshalb muß es dann in
lea Array(a5),a0 ;Scratch
move.l a0,d2
übersetzt werden, was bedingt, daß der Assembler über LeftString() und RightString() ala AmigaBasic verfügen muß. Damit könnte ich dann auch einige andere Erweiterungen machen.
g0ldm0m0, Du hast den OMA gekauft, schriebst Du. Kannst Du mir bitte eine Kopie von der Bedienungsanleitung machen? Ist die so kurz, daß sie über Email geht? Wenn nicht, muß halt die Schneckenpost herhalten oder das Fax.
So, das war genug für heute. Wer hier seinen Kommentar abgeben will, ist dazu eingeladen!
Gruß, Schofl

[ - Antworten - Zitieren - Direktlink - ]

11.01.2003, 13:37 Uhr

g0ldm0m0
Posts: 122
Nutzer
Also der Debugger hat mir die Symbole immer richtig angezeigt.
Bei Offsets gehts natürlich nicht, war mir auch egal.
Habe meist die Hardware direkt programmiert und da kann man seinen Code
im Debugger recht gut wieder erkennen I-)
(Wenn man es überhaupt Debuggen konnte) :nuke:

Also 197 Seiten abscannen, da habe ich nicht so richtig Lust drauf.
Aber es steht nicht viel Wichtiges in dem Buch.
Der Editor und Debugger sind schon fast selbst erklärend genug,
finde ich. Und die beide benötigen genau 102 Seiten.

Wichtige Sachen wie etwa die Direktiven (inkl. Makros) haben
nicht so viel Seiten. :rolleyes:
Die kann ich mal Scannen.

Zum Programmieren selber steht eigentlich nichts in diesem Buch
(mal abgesehen von einem Überblick der Adressierungsarten
des 68020).

mfg goldmomo



[ Dieser Beitrag wurde von g0ldm0m0 am 11.01.2003 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

11.01.2003, 14:08 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Schofl:
Ein weiteres Problem gibt es mit OMA, da ich endlich meine Makros erweitern will. So soll es möglich sein,
STRUCTURE Var,0
APTR dosbase
STRUCT Array,2*4 ;zwei Argumente
...
Funktion RDArgs(a5),ReadArgs_,#Template,#Array(a5),#0
zu schreiben. Latürnich gibt es keine Adressierungsart
move.l #Array(a5),d2
deshalb muß es dann in
lea Array(a5),a0 ;Scratch
move.l a0,d2
übersetzt werden, was bedingt, daß der Assembler über LeftString() und RightString() ala AmigaBasic verfügen muß.


Während ich dem ersten Teil Deiner Problemschilderung noch folgen konnte, Adressen in Datenregister zu laden, mußte ich bei dem Rest Deiner Ausführungen passen.
Ich halte es generell für keine gute Idee, ständig Assembler mit AmigaBasic zu vergleichen, Äpfel<->Birnen etc., aber abgesehen davon: Was zum Henker haben LeftString() und RightString() mit dem von Dir geschilderten Problem zu tun?

Zu dem Variablen-Problem: Die Struktur-Einträge sind Macros, die Symbole für die relative Adressierung definieren. Diese kannst Du durch Macros ersetzen, die _zusätzlich_ zu den Symbolen mit relativen Adressen auch Symbole mit absoluten Adressen erzeugen, die der Debugger dann finden kann.
Dies funktioniert natürlich nur für den Fall, wie Du ihn beschrieben hast, mit statischen Variablenpuffer in Deinem Programm. Dann kannst Du für jede Variable var eine entsprechende var_abs EQU var+Variablenpuffer definieren.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ Dieser Beitrag wurde von Holger am 11.01.2003 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Assembler-Interpreter [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.