Assembler Fragen(verschiedenes)



  • Hallo Leute.
    So das hier wird vorerst erst mal einer meiner letzten Threads hier sein 😃 . ich habe nur noch einige Fragen die sich aber recht algemein und verstreut in verschiedene themen gebite halten. Ich fange einfach mal an 🙂

    1.)Wie kann ich (ARM) Assembler Code in C++ einbetten?
    2.)Kann ich auch die CDT (C++ Plugin) von Eclipse benutzen um ASM zu progn?
    3.)Wie übergebe ich eclipse dazu den ARM ASM Compiler? der x86 is ja schon da.
    4.)Gibt es für eclipse ein reines Assembler Plugin?
    5.)Welche weiteren gute tutorials kennt ihr noch? (ARM)
    6.)Welche Bücher? (ARM)

    Zu diesem Thread komme ich dan jetzt wenn es kein asm plugin für eclipse gibt : http://www.c-plusplus.net/forum/viewtopic-var-p-is-1776525.html#1776525

    Ein Buch zu Java habe ich hier und java unterscheidet sich von C++ nicht wirklich viel, aufjedenfall gut zu erlernen ;), ich bräuchte nur ein gutes tutorial um zu wissen wie man diese macht möglichst deutsch aber es wird sicher nur englisch sein xD

    Mfg Wikinger75!



  • zu 1.) Haengt vom Compiler ab. Bei gcc/gpp ging das AFAIR mit

    asm("[Asm code]");
    

    Such einfach mal in deiner Lieblingssuchmaschine nach deinem Compiler in Verbindung mit "Inline Assembly"

    zu 2.) Ich kenne das Plugin zwar nicht, aber im Prinzip reicht doch alles, was die grundlegensten Funktionen eines Texteditors bietet, um Assembler zu programmieren... auch wenn der Code dann evtl. nicht so schoen bunt aussieht. 😃

    zu 3.) Ohje... Ich habe etwas den Ueberblick verloren, was fuer eine Tool Chain du jetzt ueberhaupt benutzt. Falls die mit auf make basiert, brauchst du da AFAIR gar nichts an eclipse zu uebergeben. Ich glaube da reichte es, die Verwendung von make in eclipse einzustellen. Das Groessere Problem war AFAIR, die ganzen Pfade zu x86-Standard-Libs aus Eclipse raus zu bekommen. 😃

    zu 4./5.) Keins, sry. Alles, was ich damals hatte, war ergooglet oder aus der Uni-Bibliothek (naemlich vor allem arm reference manual). Was noch frei zu finden sein duerfte, waere etwas zu den Stichworten "peter knaggs stephen welsh assembly language programming" oder "arm instruction set".



  • zu 1.) Haengt vom Compiler ab. Bei gcc/gpp ging das AFAIR mit

    asm("[Asm code]");
    

    Such einfach mal in deiner Lieblingssuchmaschine nach deinem Compiler in Verbindung mit "Inline Assembly"

    ja gut ich habe gcc, also muss ich mir nur die funktion asm(""); merken, samt anführungszeichen :D.

    zu 2.) Ich kenne das Plugin zwar nicht, aber im Prinzip reicht doch alles, was die grundlegensten Funktionen eines Texteditors bietet, um Assembler zu programmieren... auch wenn der Code dann evtl. nicht so schoen bunt aussieht. 😃

    joa sammt allen c++ tools halt 😃

    zu 3.) Ohje... Ich habe etwas den Ueberblick verloren, was fuer eine Tool Chain du jetzt ueberhaupt benutzt. Falls die mit auf make basiert, brauchst du da AFAIR gar nichts an eclipse zu uebergeben. Ich glaube da reichte es, die Verwendung von make in eclipse einzustellen. Das Groessere Problem war AFAIR, die ganzen Pfade zu x86-Standard-Libs aus Eclipse raus zu bekommen. 😃

    Ah gut, dann wird das mit einem makefile projekt kein problem sein, da ich den gcc mit dem x86 asm drauf habe und ein spezial arm pack von irget wo ka mit einem asm c und c++ compiler für arm, was sonst noch dabei ist weiß ich nicht aber genug :D.

    zu 4./5.) Keins, sry. Alles, was ich damals hatte, war ergooglet oder aus der Uni-Bibliothek (naemlich vor allem arm reference manual). Was noch frei zu finden sein duerfte, waere etwas zu den Stichworten "peter knaggs stephen welsh assembly language programming" oder "arm instruction set".

    die zwei begriffe haben mir auch schon weitergeholfen, danke dir^^

    Mfg Wikinger75!



  • zu 1: nimm besser einen richtigen assembler und lass den linker den rest erledigen.
    zu 5,6: http://www.amazon.com/ARM-System-Developers-Guide-Architecture/dp/1558608745
    (wird dir auch supertux empfehlen). mit etwas google-talent findeste es auch als ebook.
    🙂



  • Nochmal zu 1:
    AFAIK uebernimmt beim gcc eh ein externer Assembler die Aufgabe, inline-asm zu uebersetzen. Das duerfte dann idR. der GAS sein.

    Ich rate uebrigens dazu, sich die Syntax vom Inline-Asm beim gcc nochmal genauer anzuschauen. An den Asm-Code in " kannst du, getrennt durch Doppelpunkte, noch eine ganze Reihe wichtiger Optionen anhaengen.



  • zu 1: nimm besser einen richtigen assembler und lass den linker den rest erledigen.

    ja ich will ja nur wissen wie ich asm in einem c/c++ projekt benutzen kann, wie das z.b beim bau eines skernels der fall ist 😉

    zu 1, aber die funktion asm(""); ist schon richtig oder?

    Nochmal zu 1:
    AFAIK uebernimmt beim gcc eh ein externer Assembler die Aufgabe, inline-asm zu uebersetzen. Das duerfte dann idR. der GAS sein.

    Ich rate uebrigens dazu, sich die Syntax vom Inline-Asm beim gcc nochmal genauer anzuschauen. An den Asm-Code in " kannst du, getrennt durch Doppelpunkte, noch eine ganze Reihe wichtiger Optionen anhaengen.

    Hö?? hat c++ eine extra wurst bei asm oder wie? xD

    Mfg Wikinger75!

    edit :

    zu 5,6: http://www.amazon.com/ARM-System-Developers-Guide-Architecture/dp/1558608745

    ich habe von diesem buch eine ausgabe aus dem jahr 2004 als pdf gefunden.
    ist dieses hier neuer, würde das einen unterschied machne wenn ich das pdf oder die hier lese?



  • @Wikinger75: Hast Du überhaupt Erfahrungen in C oder C++? Wenn nicht, macht es wenig Sinn, mit Assembler anzufangen...



  • Wikinger75 schrieb:

    zu 5,6: http://www.amazon.com/ARM-System-Developers-Guide-Architecture/dp/1558608745

    ich habe von diesem buch eine ausgabe aus dem jahr 2004 als pdf gefunden.
    ist dieses hier neuer, würde das einen unterschied machne wenn ich das pdf oder die hier lese?

    neuere bücher sind normalerweise besser als ältere, aber das von 2004 ist wohl erstmal ok, wenn vielleicht auch noch nix über die xscale und cortex typen drinsteht.

    abc.w schrieb:

    @Wikinger75: Hast Du überhaupt Erfahrungen in C oder C++? Wenn nicht, macht es wenig Sinn, mit Assembler anzufangen...

    begründung?
    🙂



  • "Weil kein Plan..."



  • ^^sehe ich nicht so. um mit asm anzufangen, braucht man etwas kenntnisse in mikroprozessor- und digitaltechnik, aber hochsprachen (C u.ä.) vorher zu können, ist nicht hilfreich. umgekehrt aber doch, also wer C programmieren will und vorher schon assemblerprogrammier-erfahrung gesammelt hat, der bekommt gleich ein tieferes verständnis, als einer der überhaupt nicht weiss, was auf der low-level ebene abgeht.
    🙂



  • @Wikinger75: Hast Du überhaupt Erfahrungen in C oder C++? Wenn nicht, macht es wenig Sinn, mit Assembler anzufangen...

    ja habe ich doch woher sollte ich wissen wie ich asm in c++ einbinde, wenn ich mich damit nie beschäftigt habe 😉

    neuere bücher sind normalerweise besser als ältere, aber das von 2004 ist wohl erstmal ok, wenn vielleicht auch noch nix über die xscale und cortex typen drinsteht.

    Okay, werd erstmal die ältere ausgabe mir ansehn müssen, für die neuere hab ich kein geld, 66€ für nen buch^^

    ^^sehe ich nicht so. um mit asm anzufangen, braucht man etwas kenntnisse in mikroprozessor- und digitaltechnik, aber hochsprachen (C u.ä.) vorher zu können, ist nicht hilfreich. umgekehrt aber doch, also wer C programmieren will und vorher schon assemblerprogrammier-erfahrung gesammelt hat, der bekommt gleich ein tieferes verständnis, als einer der überhaupt nicht weiss, was auf der low-level ebene abgeht.
    🙂

    gut zu wissen 😃

    naja zu meiner frage 1 hab ich immer noch keine bestätigung wird mir mal die manuel von gcc ansehen unter "inline assembler" wie hier gesagt wurde 😃

    das buch werd ich versuchn mir zu holen.

    Mfg Wikinger75!

    Edit : sehe grad das ich mirs nicht kaufen muss, weil das buch die ausgabe von 20004 ist und ichd iese habe als pdf, wo bekomme ich dan tutorials her wo das erklärt wird was ab 2004 noch dazu kam?



  • Ich habe bloss gefragt, weil es Anzeichen dafür gibt (wie keine Ahnung von Makefiles oder Neigung zur Benutzung einer IDE), so dass (wenn man ehrlich zu sich selbst ist) wirklich keinen Sinn macht, sich jetzt mit Assembler zu beschäftigen.
    Vielleicht wäre zum Üben folgendes sinnvoller: Kompiliere Deine C oder C++ Programme mit Assembler-Ausgabe und versuche, diese zu verstehen? Später kann man mit verschiedenen Optimierungsstufen des Compilers die Assembler-Ausgabe generieren lassen und versuchen zu verstehen, was anders ist und warum. Danach hast Du einen Plan, wie Funktionen aufgerufen werden, welche Aufrufkonventionen es gibt, und kannst kleinere Assembler-Funktion selbst schreiben und versuchen, in Deinem Programm aufzurufen...



  • Ich habe bloss gefragt, weil es Anzeichen dafür gibt (wie keine Ahnung von Makefiles oder Neigung zur Benutzung einer IDE), so dass (wenn man ehrlich zu sich selbst ist) wirklich keinen Sinn macht, sich jetzt mit Assembler zu beschäftigen.
    Vielleicht wäre zum Üben folgendes sinnvoller: Kompiliere Deine C oder C++ Programme mit Assembler-Ausgabe und versuche, diese zu verstehen? Später kann man mit verschiedenen Optimierungsstufen des Compilers die Assembler-Ausgabe generieren lassen und versuchen zu verstehen, was anders ist und warum. Danach hast Du einen Plan, wie Funktionen aufgerufen werden, welche Aufrufkonventionen es gibt, und kannst kleinere Assembler-Funktion selbst schreiben und versuchen, in Deinem Programm aufzurufen...

    Ah okay, is bei mir halt gewohnheit, wer will den auf den komfort einer ide verzichten 😃 . Wies ausieht gibt es aber irgentwann sowieso keinen weg mehr herum, also werd ich spätestens mit asm lernen ;). Hmm okay das mach ich au mal.

    Mfg Wikinger75!



  • abc.w schrieb:

    Ich habe bloss gefragt, weil es Anzeichen dafür gibt (wie keine Ahnung von Makefiles oder Neigung zur Benutzung einer IDE), so dass (wenn man ehrlich zu sich selbst ist) wirklich keinen Sinn macht, sich jetzt mit Assembler zu beschäftigen.

    das ist doch völliger quatsch. wer asm programmieren will, muss sich doch nicht zwangsläufig mit diesen vorsintflutlichen makefiles rumärgern. und eine IDE leistet auch wertvolle dienste, z.b haste 'nen integrierten debugger, mit dem du durch den code steppen und registerinhalte ansehen kannst, usw. low-level programmierung bedeutet nicht, dass man uralt-tools verwenden und so programmieren muss, wie vor 60 jahren. aber vielleicht möchteste ihm auch noch vorschlagen, dass er diese at&t-syntax des GCC lernen soll, um ein 'richtiger' assembler-programmierer zu werden?

    abc.w schrieb:

    Vielleicht wäre zum Üben folgendes sinnvoller: Kompiliere Deine C oder C++ Programme mit Assembler-Ausgabe und versuche, diese zu verstehen? Später kann man mit verschiedenen Optimierungsstufen des Compilers die Assembler-Ausgabe generieren lassen und versuchen zu verstehen, was anders ist und warum.

    ^^das halte ich auch für den falschen weg. für reine assemblerprogrammierung oder zum asm-lernen ist's völlig irrelevant, was irgendwelche compiler anstellen. das wird nur wichtig, wenn man seinen assemblercode mit dem asm-output einer hochsprache zusammenbringen will.
    🙂



  • Ok, ich habe ein Paar Vorschläge gemacht, wo ich der Meinung bin, dass es am schnellsten, effektivsten und sinnvollsten ist. Der gute Mann kann sich die Meinungen in Ruhe durchlesen und seine eigene Entscheidung treffen.



  • Ich denke mal ich werde beides machen, ich lerne erst einmal asm und danach versuche ich asm mit c++ zu lernen 😉

    aber vielleicht möchteste ihm auch noch vorschlagen, dass er diese at&t-syntax des GCC lernen soll, um ein 'richtiger' assembler-programmierer zu werden?

    Ähm AT&T und Intel unterscheidungen sind nur bei x86 und amd64 sowald ich weiß ;).
    Ich möchte aber unter ARM schreiben und dafür habe ich aber auch den richtigen gcc compiler um mir anzusehen was der macht für asm code dan.

    Wird schon klappen, danke leute 😃

    Mfg Wikinger75!



  • Wikinger75 schrieb:

    Ähm AT&T und Intel unterscheidungen sind nur bei x86 und amd64 sowald ich weiß ;).

    Ja, genauer, es geht um die Syntax.
    Wie findest Du eigentlich die Syntax des ARM Assemblers? Intuitiv oder eher gewöhnungsbedürftig? (Ich habe mich übrigens auch dazu entschieden, ARM auf der Assembler-Ebene kennenzulernen.)

    PS: Ich sehe schon, MOV R0, R1, move R1 into R0 (unconditionally) - also auch ein wenig "Intel-geschädigt"...


Log in to reply