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

amiga-news.de Forum > Programmierung > Welcher Assembler ist der Beste? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

09.03.2009, 11:16 Uhr

Mindshadow
Posts: 1
Nutzer
Ich beschäftige mich schon seit einiger Zeit mit 6502/6510-Assembler-Programmierung auf dem C-64 und interessiere mich auch für 68k-Assembler.

Welche Tools (Assembler, Diassembler, Monitore etc.) sind Eurer Meinung nach die Besten?

Danke und Gruss,

Mindshadow

[ - Antworten - Zitieren - Direktlink - ]

09.03.2009, 11:31 Uhr

MaikG
Posts: 5172
Nutzer
ASMPro

[ - Antworten - Zitieren - Direktlink - ]

09.03.2009, 12:29 Uhr

Gurujaeger
Posts: 164
Nutzer
Vasm

Hat den Vorteil das er auch mit 6502 und PPCs etc. was anzufangen weiß und zu VBCC paßt!

Also jetzt und auch in zukunft braucht es da nur ein Tool für alte,aktuelle und neue Projekte!

Außerdem ist Frank Wille auch immer noch am machen (Letzte Version Vasm ist vom 17.01.2009),im Gegensatz zu anderen Projekten die schon seit mehreren Jahren mindestens stehen obwohl Fehler bekannt sind.

[ - Antworten - Zitieren - Direktlink - ]

09.03.2009, 15:00 Uhr

AGSzabo
Posts: 1663
Nutzer
@Gurujaeger:

ich benutze phxass, das ist der vorgänger von vasm und schon auch sehr gut.

noch ne frage: wie debugge ich wenn die herkömmlichen tools alle nicht funktionieren (enforcer, muforce, guardian)? da gibts zB den powervisor oder so aber wie benutzte ich die zum debuggen einer library??

der winuaeenforcer bringt bei nem absturz so viele hits das man nicht schnell genug das logfenster anhalten kann!

gruesse,
Andreas

--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110


[ Dieser Beitrag wurde von AGSzabo am 09.03.2009 um 15:05 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

10.03.2009, 18:48 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
... aber wie benutzte ich die zum debuggen einer library??

Spezielle Tools oder Modi zum Debuggen einer Library gibt es afaik nicht. Da hilft nur, ein kleines Testprogramm zu schreiben, das die Library benutzt, und dieses zu debuggen, während man gleichzeitig sicherstellt, dass kein anderes Programm die Bibliothek benutzt.
Zitat:
der winuaeenforcer bringt bei nem absturz so viele hits das man nicht schnell genug das logfenster anhalten kann!
Ich schätze, genau dafür wurde die Option, den Output in eine Datei zu schreiben, geschaffen...

mfg

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

[ - Antworten - Zitieren - Direktlink - ]

10.03.2009, 22:37 Uhr

DieterG
Posts: 164
Nutzer
@Holger:
Es gab da mal LibSnooper, damit konnte man alle libraryaufrufe mitschreiebn, und das war recht einfach zu benutzen.
Aber ich weiß nicht, auf welchem OS das lief, wird eventuell auf neueren nicht mehr richtig funktionieren, unter os4 stürzt es jedenfalls bei der auswahl einer funktion einer library sofort ab, aber das ist ja auch nicht der Sinn des programmes gewesen, unter os3.9 könnte es eventulle noch arbeiten, müsste man mal testen.


Als Assembler nutze ich auch den ASM-Pro,der hat zwar einige Fehler, aber die kennt man, und kann sie leicht umgehen.
Der erzeugte Code ist jedenfalls fehlerfrei und man hat sozusagen direkt ein komplette IDE, was bei vasm ja nicht der Fall ist.
Später kann man seinen Code immer noch durch den vasm schicken, wenn er erstmal unter ASM-Pro läuft, die Eigenheiten kann der beiden Assembler kann man mittels suchen/ersetzen (auch automatisiert) relativ leicht konvertieren.

[ - Antworten - Zitieren - Direktlink - ]

10.03.2009, 22:58 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

>Ich schätze, genau dafür wurde die Option, den Output in eine Datei zu schreiben, geschaffen...

mit "winuaeenforcer 2" (wie im .txt file angegeben) geht es jedenfalls nicht. unter windos stürzt es ab unter linux passiert garnix ausser das alles ganz langsam wird...
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

11.03.2009, 08:21 Uhr

Thore
Posts: 2266
Nutzer
Kannst Du die LibFuncs als Unterprogramme testen, ohne Lib-Aufruf sondern direkt in einem Testprogramm? Wenn sie dann funktionieren, kannst Du sie in die Lib zurückschreiben.

[ - Antworten - Zitieren - Direktlink - ]

11.03.2009, 08:34 Uhr

AGSzabo
Posts: 1663
Nutzer
@Thore:

nein, das hängt ziemlich alles zusammen. was ich machen kann und mache ist das ich an bestimmten stellen "stops" einbaue und/oder reigster nach $70000 oder so schreibe und dann mit nem monitor da hin schaue um zu sehen ob meine variablen die richtigen werte beinhalten. natürlich ist das eine ziemliche fitzelarbeit...

gruesse,
Andreas

--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

11.03.2009, 08:48 Uhr

Thore
Posts: 2266
Nutzer
Da solltest Du vorher Speicher reservieren und den Zeiger darauf der Lib mitgeben, z.B. nach a0 speichern, dann die Lib aufrufen und dort a0 als Debug-Speicherstelle benutzen.
Zwar klappt es meist die Adresse direkt zu verwenden, doch sobald benötigte Daten drinstehen kann es seltsame Auswirkungen haben.

Was du auch machen kannst, sind Textausgaben nach stdout.

[ - Antworten - Zitieren - Direktlink - ]

12.03.2009, 11:19 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von DieterG:
@Holger:
Es gab da mal LibSnooper, damit konnte man alle libraryaufrufe mitschreiebn, und das war recht einfach zu benutzen.

Das kann Snoopy auch.
Hier geht's aber um mehr als nur die Aufrufe mitloggen.

Zitat:
Original von AGSzabo:
nein, das hängt ziemlich alles zusammen. was ich machen kann und mache ist das ich an bestimmten stellen "stops" einbaue und/oder reigster nach $70000 oder so schreibe und dann mit nem monitor da hin schaue um zu sehen ob meine variablen die richtigen werte beinhalten. natürlich ist das eine ziemliche fitzelarbeit...

Versteh ich nicht. Ich hab früher mit Devpak und dessen Debugger MonAm gearbeitet und konnte problemlos in Library-Funktionen wie in normale Unterprogramme schrittweise hineingehen oder auch ganz normale Breakpoints setzen. Und die Variablen inspizieren natürlich auch.

Zitat:
Original von Thore:
Da solltest Du vorher Speicher reservieren und den Zeiger darauf der Lib mitgeben, z.B. nach a0 speichern, dann die Lib aufrufen und dort a0 als Debug-Speicherstelle benutzen.

Dann kann man auch gleich einen Bereich innerhalb der eigenen Library-Struktur dafür reservieren. Allerdings sollte das sowieso der Bereich sein, in dem die Variablen liegen, also wozu dann noch mal woanders hin kopieren...

mfg

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

[ - Antworten - Zitieren - Direktlink - ]

12.03.2009, 14:43 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

>Versteh ich nicht. Ich hab früher mit Devpak und dessen Debugger MonAm gearbeitet und konnte problemlos in Library-Funktionen wie in normale Unterprogramme schrittweise hineingehen oder auch ganz normale Breakpoints setzen. Und die Variablen inspizieren natürlich auch.

Das wäre uferlos bis ich mit tracen erstmal an der fraglichen stelle angekomen bin. dazwischen liegt eine wait-message schleife u.a., so dass ich beim anhalten im rom lande...

grusse,
Andreas
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

13.03.2009, 10:16 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
Das wäre uferlos bis ich mit tracen erstmal an der fraglichen stelle angekomen bin.

Dafür benutzt man dann ja auch Breakpoints.
Ich versteh immer noch nicht, wo nun eigentlich Dein Problem liegt. Libraries kann man mit exakt den gleichen Mitteln debuggen, wie ein normales Programm.

mfg

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

[ - Antworten - Zitieren - Direktlink - ]

13.03.2009, 10:20 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:
>Dafür benutzt man dann ja auch Breakpoints.

und wie finde ich die stelle für den bp?
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 10:31 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
@Holger:
>Dafür benutzt man dann ja auch Breakpoints.

und wie finde ich die stelle für den bp?

Wie würdest Du es denn bei einem normalen Programm machen?

mfg

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

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 11:42 Uhr

Thore
Posts: 2266
Nutzer
Zitat:
Dann kann man auch gleich einen Bereich innerhalb der eigenen Library-Struktur dafür reservieren. Allerdings sollte das sowieso der Bereich sein, in dem die Variablen liegen, also wozu dann noch mal woanders hin kopieren...
Klar kann man eine Variable innerhalb der Lib nehmen, man muss sie dann eben nur anzeigen, das war mein zweiter Vorschlag mit dem eingebauten print nach stdout.
Möchte er aber in einem Hex-Editor schauen, muss er die konkrete Adresse wissen wo der Wert drinsteht, deshalb hat er das so angefangen.
Wenn er Register verwendet, stehen die Werte (noch) nicht in Variablen.

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 12:39 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Thore:
Klar kann man eine Variable innerhalb der Lib nehmen, man muss sie dann eben nur anzeigen, das war mein zweiter Vorschlag mit dem eingebauten print nach stdout.

print nach stdout in einer Library hat einige Tücken...
Zitat:
Möchte er aber in einem Hex-Editor schauen, muss er die konkrete Adresse wissen wo der Wert drinsteht, deshalb hat er das so angefangen.
Wenn er Register verwendet, stehen die Werte (noch) nicht in Variablen.

Die konkrete Adresse kennt er für dynamisch angelegten Speicher natürlich auch nicht, es sei denn, er verfolgt das Testprogramm mindestens bis zu der Stelle, an der der Speicher reserviert wird. Dann kann er es aber genausogut bis zu der Stelle verfolgen, an der die Library geöffnet wird, und kennt somit auch die Basisadresse für die Variablen innerhalb der Library.

Letztendlich ist Dein Vorschlag, die Routinen wie normale Unterprogramme zu debuggen, immer noch der beste. Wenn man die Routinen nicht isolieren kann, linkt man halt die gesamte Library statisch mit dem Testprogramm und erhält ein Programm, mit dem jeder Debugger, auch source-level Debugger, klarkommen sollte. Wo jetzt AGSzabos Probleme liegen, wissen wir nicht. Oder?

mfg

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

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 13:37 Uhr

Thore
Posts: 2266
Nutzer
Zitat:
Wenn man die Routinen nicht isolieren kann, linkt man halt die gesamte Library statisch mit dem Testprogramm und erhält ein Programm, mit dem jeder Debugger, auch source-level Debugger, klarkommen sollte.
Jupp, das wäre ein geeigneter Weg.
Wobei ein Einbinden der Unterroutinen kein Problem sein sollte, gerade wenn sowieso alles in Assembler ist.
Ein movem.l vorn und hinten um die Register zu retten, und es sollte sicher sein...

Zitat:
Wo jetzt AGSzabos Probleme liegen, wissen wir nicht. Oder?
Die Probleme liegen wohl eher darin begründet, daß er erst anfängt Programmieren zu lernen. Da darf er ruhig mal Erfahrungen sammeln.

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 14:21 Uhr

Andreas_Wolf
Posts: 2980
Nutzer
> daß er erst anfängt Programmieren zu lernen

Klick mal auf den Link in seinem Profil.

Siehe z.B. auch:
http://www.amiga-news.de/de/news/AN-2001-08-00015-DE.html
http://www.amiga-news.de/de/news/AN-2002-11-00136-DE.html

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 14:59 Uhr

Thore
Posts: 2266
Nutzer
Zitat:
Klick mal auf den Link in seinem Profil.
Habe ich ihm da womöglich unrecht getan? Wenn ja, sorry dafür.
Allerdings wunder ich mich dann über diverse Fragen... ;)

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 15:06 Uhr

AGSzabo
Posts: 1663
Nutzer
oh, danke für die links. die verschleiern aber, das mein zweitjüngstes projekt eine ripper-library namen eXternal Format Rippers (XFR) mit clients änlich xad war (auch auf meiner hp).

mit dem programmieren ist es bei mir so, dass ich seit 2003 fast nix mehr damit gemacht habe und jezt aber mein neustes projekt "XUI", eXternal User Interfaces weitergeführt habe, aber vergessen habe wie man sowas debuggt. es widerstrebt mir irgendwie im code gezielte endloschleifen zu setzen um den prozessor da abzufangen. ich habe - veilleicht unbegründete - zweifel dass ich damit weiterkomme und blicke da jezt einfach nicht durch. darum habe ich hier mal gefragt. aber das wird schon wieder. wenn ich nach 6 jahren der abstinenz mein konzept noch verstehe dann ist das imo gut.


ps: die links zu den download lha-archiven vom afilter sind veraltet. bitte geht bei i. den weg ueber meine amiga hp.

--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 17.03.2009 um 15:15 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 15:12 Uhr

AGSzabo
Posts: 1663
Nutzer
@Thore:

nein, hast du nicht. ich bin in vielen punkten wieder zum anfänger mutiert wegen langzeitiger abstinenz von der materie. aber nochmal rein zu kommen das klappt schon irgendwie. ;)
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 16:09 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
..., aber vergessen habe wie man sowas debuggt. es widerstrebt mir irgendwie im code gezielte endloschleifen zu setzen um den prozessor da abzufangen.

Mit Endlosschleifen fängt man ja auch nichts ab. Wenn Du in Assembler programmierst, setzt Du z.B. einfach eine illegal Anweisung an die Stelle, und der Debugger fängt selbige ab und hält die Ausführung an dieser Stelle an.

Der sprachunabhängige Weg besteht darin, einfach an der gewünschten Stelle im Debugger einen Breakpoint zu setzen, über das Menü, einen Tastendruck, was auch immer der Debugger dafür anbietet. Der Unterschied zur selbst gesetzten illegal Anweisung besteht darin, dass der Debugger "weiß", das es sich um einen Breakpoint handelt, und deshalb nicht die Meldung "illegal instruction", sondern "breakpoint reached" ausgibt...

Mit einem source-level Debugger kannst Du den Breakpoint direkt für eine Zeile im source-code, statt in einer Disassembler-Anzeige setzen. Auch wenn der Unterschied für Assembler-Code minimal ist.
Zitat:
ich habe - veilleicht unbegründete - zweifel dass ich damit weiterkomme und blicke da jezt einfach nicht durch. darum habe ich hier mal gefragt.
Man kann Dir aber nicht helfen, wenn man nicht weiß, wo man überhaupt anfangen soll. Du hast nach speziellen Möglichkeiten zum Debuggen einer Library gefragt, scheinst aber generell nicht (mehr) zu wissen, wie man einen Debugger benutzt...

mfg

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

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 19:28 Uhr

Andreas_Wolf
Posts: 2980
Nutzer
> die links [...] verschleiern aber, das mein zweitjüngstes projekt
> eine ripper-library namen eXternal Format Rippers (XFR) mit clients
> änlich xad war

Ich schrieb "z.B.", war also ohne Anspruch auf Vollständigkeit. Aber das hole ich natürlich gern nach:

http://www.amiga-news.de/de/news/AN-2003-04-00069-DE.html
http://www.amiga-news.de/de/news/AN-2003-04-00106-DE.html
http://www.amiga-news.de/de/news/AN-2003-04-00189-DE.html

:-)

> auch auf meiner hp

Ja, vor allem auf die habe ich Thore ja hingewiesen.

[ - Antworten - Zitieren - Direktlink - ]

17.03.2009, 20:29 Uhr

jolo
Posts: 110
Nutzer
@AGSzabo:

Falls Du beim Debuggen wirklich nicht weiter kommst, benutze "_kprintf" zur Ausgabe (linken mit debug.lib) und starte vorab Sushi (oder gleichwertiges Programm).
Falls Dein Programm abstürzt, kannst Du hinter jeder "_kprintf" Ausgabe eine Zeitlang warten, mittels _LVODelay (falls Prozesse Deine Routinen aufrufen) oder mittels eines Busy-Loops des CIA-Bausteins (Tasks), so dass Du eine Ahnung bekommst, welche Routine den Absturz verursacht.

Grüße

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Welcher Assembler ist der Beste? [ - Suche - Neue Beiträge - Registrieren - Login - ]


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