Ist Assembler schwieriger als C++ ?
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
assembler
befehl
befehlssatz
benutzen
bescheid
compiler
computer
informieren
lernen
mikrocontroller
performance
programm
programmieren
programmiersprache
prozessor
schalter
sprache
umsteigen
umstieg
widerspruch
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
crack123 schrieb:
Ich programmiere gerade in C++ und möchte in Assembler umsteigen. Wird das sch schwierig werden. Welchen Compiler kann ich denn benutzen?
Als erstes solltest du dich mal informieren was Assembler eigentlich ist. Dann wäre dir auch klar, warum es gar keine Compiler für Assembler geben kann.
Was den "Umstieg" angeht, so ist Assembler naturgemäß viel schwerer als C++. Außerdem muss man bei Assembler viel besser Bescheid wissen, wie ein Computer funktioniert. -
Hallo,
warum willst Du Assembler lernen?
Auf dem Computer ist es Unfug viele Programme in Assembler zu programmieren, denn die Zeit, um alles zu implementieren, dauert wesentlich länger.
Assembler wird von den Befehlen direkt in die Nullen und Einsen umgewandelt. D.h., du bist größtenteils damit beschäftigt, irgendwelche Daten von einem Register ins andere zu schieben. Dies ist sehr zeitaufreibend und jeder Prozessor hat seine eigenen Befehle.
Wenn dich Assembler wirklich interessiert, programmiere Mikrocontroller z.B. PICs oder AVRs. Da macht diese Programmierung noch Sinn, denn hier kommt es auf jedes Bit an. Wenn Du damit gut programmieren kannst, dann lohnt sich ein Blick auf den Assembler den die z.T. komplizierten modernen Prozessoren haben.
Gruß,
Sebastian
PS: Guck Dir mal http://www.sprut.de/electronic/pic/index.htm an. -
Hi,
rein Assembler programmiert wird heute auf dem PC wahrscheinlich nurnoch zu Übungszwecken. Da du allerdings Erfahrung in C++ hast, kann ich dir den Inlineassembler ans Herz legen. Naturgemäß sind heutige Compiler für Hochsprachen zwar hocheffizient, was die Optimierung angeht aber an manchen Stellen hilft es dir wirklich per Hand zu arbeiten, um das Maximum an Leistung rauszuholen. Leider ist es in C++ von den Compilern abhängig, wie der Inlineassembler aussieht und wie schon von meinen Vorrednern gesagt, ist es erstens wesentlich schwerer in Assembler zu programmieren, weil alles auf niedrigstem Niveau abläuft und zweitens ist Assemblercode meistens stark Plattformabhängig.
Falls du dennoch Assembler lernen möchtest, solltest du jemanden suchen, der das schon beherrscht und dich dabei unterstützt, weil es allein aus Tutorials meiner Erfahrung nach eher schwer war.
Grüße,
Sektor -
Ich würd dir auch erstmal ne Lektüre über Assembler empfehlen. Du wirst schnell feststellen, dass es bis auf Übungszwecke kaum noch was bringt, heutzutage dermaßen "low level"-Code zu schreiben. Lohnt sich einfach nicht.
Davon abgesehen sind die Optimierungen, die ein moderner Compiler hervorkramt, oftmals noch ne Ecke besser als das, was ein Mensch in ASM zu schreiben vermag. -
Kommt ganz darauf an... Aber z.B. auf ARM kann man gewaltig was an Performance rausholen, wenn man sich wirklich auskennt.
-
Man kann auch auf heutigen PCs einiges mit SSE rausholen. Ich hab bisher nur selten Unterstützung in Compilern gesehen, wenn man mal von Intels absieht, der das mit Instinsics umsetzt. Die Compiler sind schon stellenweise besser, als man es per Hand je sein könnte. Aber der Compiler versteht niemals deinen ganzen Algorithmus und du kannst im großen Zusammenhang besser programmieren. Es ist eben nur schwer den Überblick zu behalten.
-
So einfach aus Spass mal Assembler lernen .. auch was schönes
Dann such dir einen Microcontroller oder CPU heraus lerne den Befehlssatz dafür.
Such dir einen passenden Assembler ..
So heisst nämlich auch das Programm, das deinen assemblercode in Binärcode übersetzt.
Jetzt brauchst du nur noch eine Möglichkeit den Binärcode in dein Zielsytem zu bringen .
Ein Debugger für dein Zielsytem wäre auch nicht schlecht
-
Also ich habs in der schule gelernt! meines erachtes is es nicht schwieriger, wenn nicht sogar einfacher.. das einzige was dich vielleicht abhalten könnte ist, dass assambler wahnsinnig umständlich ist.. eine zeile in c können in assambler 5 oder sogar 10 zeilen lang werden... aber es ist cool eine so hardwarenahe sprache zu lernen...
also auf jeden fall mir gefällt assambler ganz gut... nur es ist halt einiges an arbeit und mehr mühe beim programmieren...
also programm haben wir immer winavr verwendet und damit die avr µC programmiert... -
bladehunter schrieb:
crack123 schrieb:
Ich programmiere gerade in C++ und möchte in Assembler umsteigen. Wird das sch schwierig werden. Welchen Compiler kann ich denn benutzen?
Als erstes solltest du dich mal informieren was Assembler eigentlich ist. Dann wäre dir auch klar, warum es gar keine Compiler für Assembler geben kann.
Was den "Umstieg" angeht, so ist Assembler naturgemäß viel schwerer als C++. Außerdem muss man bei Assembler viel besser Bescheid wissen, wie ein Computer funktioniert.
Du musst Dich schon mit den Befehlssätzen des Prozessors beschäftigen. Es ist aber auch eine Programmiersprache und Programmiersprachen brauchen einen Übersetzer in Maschinensprache. Assembler ist Maschinennah, aber keine Maschinensprache, die besteht letztlich aus 0 oder 1 -Folgen. Auch werden beim Assemblieren, Maschienenroutinen hinzugebunden. Höhere Programmiersprachen wie C++ sind daher einfacher zu erlernen, nur Maschinennahe Programme sind einfach schneller, wenn sie gut programmiert werden. -
anettes-quiltbox schrieb:
Du musst Dich schon mit den Befehlssätzen des Prozessors beschäftigen. Es ist aber auch eine Programmiersprache und Programmiersprachen brauchen einen Übersetzer in Maschinensprache. Assembler ist Maschinennah, aber keine Maschinensprache, die besteht letztlich aus 0 oder 1 -Folgen. Auch werden beim Assemblieren, Maschienenroutinen hinzugebunden. Höhere Programmiersprachen wie C++ sind daher einfacher zu erlernen, nur Maschinennahe Programme sind einfach schneller, wenn sie gut programmiert werden.
Und wieso hast du mich jetzt zitiert? Ich sehe in deinem Text keinen Widerspruch zu meinem.
Assemblerprogrammierung auf Microcontrollern ist natürlich deutlich "leichter", als auf einem PC, weil man damit eine komplett andere Kategorie von Software programmiert und diese Microcontroller eben darauf optimiert sind, Hardware direkt anzusteuern. Software, die auf einem Computer laufen soll, ist interagiert in der Regel nie direkt mit der Hardware, sondern überlässt dies dem Betriebssystem. -
bladehunter schrieb:
Und wieso hast du mich jetzt zitiert? Ich sehe in deinem Text keinen Widerspruch zu meinem.
Wenn Du genau liest, dann ist schon ein Widerspruch da, Widerspruch wäre auch falsch, eher Richtigstellung.
Was ist denn ein Übersetzer einer Programmiersprache, nichts anderes als ein Compiler. Ist ja auch logisch, da Assembler-Befehle
wie diese (geltend für den 8086/88 Befehlssatz):
MOV AL,100 ;lade AL mit 100
NEG AL ;bilde-100
CBW ;und verwandle in Wort (ergibt FF64hex)
auch erst einmal in eine Sprache übersetzt werden, die ein Prozessor versteht. Es gibt Interpreter, welche das direkt im Lauf machen, es gibt Übersetzerprogramme, die ein Ausführbares Maschinenprogramm erstellen. Interpreter auf PC-Ebene hate der Apple II, der mit seinem Applesoft, BASIC - Befehle an nahm, diese dann direkt in Maschinensprache (nicht Maschinennah) übersetzte. Was noch dafür spricht, es gibt sogenannte Disassembler, die eine Maschinensprache nach Assembler übersetzt.
LG -
Ein Assembler ist kein Compiler !
Ein Compiler ubersetzt eine Hardwareunabhängige Programmiersprache
in hardwareabhängigen Assenblercode und der Assembler dann in Binärcode den der Prozessor ausführen kann.
Da das ganze heutzutage in einem Zuge passiert siehst du das nicht. Aber jeder Compiler kennt einen Schalter
wo er den erzeugten Assemblecode ausgibt.
-
wibald schrieb:
Ein Assembler ist kein Compiler !
Das hat auch niemand geschrieben,sorry, so sollte es nicht rüber kommen, nur die Aussage war: "Es gibt keinen Compiler für Assembler". Das ein Compiler in Phasen arbeitet, ist auch klar, der Schalter, erzeuge "Assembler-code", gab es schon immer.
LG -
Also aus eigener Erfahrung heraus, kann ich sagen: Assembler ist schwieriger als C++. Zumindest trifft das auf mich zu. Ich werde einfach nicht warm mit Assembler. Daher habe ich mich dann auch in die andere Richtung weiter gebildet und bin fleißig am Lernen von Java und C#.
-
Ich beschäftige mich zur Zeit auch ein wenig mit Assembler da wir in der Schule zur Zeit den AT mega8 programmieren. Muss wirklich sagen. dass C bzw C++ mir besser gefällt da man in C einfach unkomplizierter programmieren kann. Assembler würde ich jetzt nicht unbedingt als schwer empfinden, da die Reihe an Befehlen wirklich nicht so umfangreich ist, jedoch man einfach für das gleiche Ergebnis in C mehr schreiben muss.
Klar Assembler ist hardwarenah und von der performance schneller als C nur dafür ist Assembler nicht so plattformunabhängig da jeder Mikrocontroller anders ist und es sich nicht so einfach übertragen lässt.
Lern die Grundlagen für Assembler und dann bleib bei C ist wesentlich unkomplizierter ;) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage