Assembler Fragen(verschiedenes)
-
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"...