Assembler - was is das genau???
-
das funktioniert über ports. und mit c kann man natürlich auch auf ports schreiben.
-
braucht man für die grafig programmierung nicht auch asm?z.b wenn ich mir eine eigene grafig lib wie allegro oder sdl schreiben will???
-
Assembler braucht man auf alle Fälle noch für Zeugs, was sich in der Hochsprache nicht ausdrücken läßt (z.B. SSE - Anweisungen u.a. Platformspezifische Befehle). Das sind dann aber meist winzige C-Funktionen, die inline-assembler enthalten.
Vor 10 Jahren noch unumstrittenes "Hauptanwendungsgebiet" auf Hochsprachenfähigen Systemen - die "Handoptimierung" - macht heutzutage ein guter Compiler besser. Wenn es drauf ankommt, man muß zwar noch immer ein wenig Assembler "verstehen", um auch in C effektiven Code zu schreiben, aber das ist wesentlich leichter geworden.
Die meiste Hardware-Ansteuerung läuft über in/out-Befehle bzw. hardware-gemappte Speicheradressen. Das läßt sich alles vom C aus machen.
Auf Microcontrollern sieht das noch ein bißchen anders aus: die Compiler sind (noch) nicht so gut, und Speicher ist nicht so massig verfügbar. Da muß man häufiger zum Assembler greifen.
-
peterchen schrieb:
Assembler braucht man auf alle Fälle noch für Zeugs, was sich in der Hochsprache nicht ausdrücken läßt (z.B. SSE - Anweisungen u.a. Platformspezifische Befehle). Das sind dann aber meist winzige C-Funktionen, die inline-assembler enthalten.
Gute C/C++-Compiler generieren auch SSE/SSE2/3DNow!/etc-Befehle.
-
war ja nur ein Beispiel - es gibt ja meistens Prozessorfunktionalität die auch vom aktuellsten Compiler nicht / nicht vollständig abgedeckt wird.
(und gerade bei den ganzen SIMD-Befehlen muß man wahrscheinlich seinen Code sowieso dahingehend sortieren, daß sie sinnvoll sind)
-
FlipStar schrieb:
hallo,
ich habe mal davon gehört,dass man programme auch direkt binär schreiben kann/könnte... dann kam immer wieder der name der programmiersprache "assemler" auf. ich weiss dass assembler programme plattform- und sogar hardwareabhängig sind...wo liegt dann der vorteil? schnelligkeit? (weil --> gegenteil von java und java = langsam)
was schreibt man für programme in assembler?
mfg FlipsTarseit wann ist ASS plattform und hardwareunabhängig? ASS ist dies eben nicht. Denn nimm mal Microcontroller, allein da gibts mega unterschiede ansetuerung der IO und ISR usw. oder code in ASS für den neuesten intel und den ältesten intel
oder amd 64.
-
newkid schrieb:
FlipStar schrieb:
hallo,
ich habe mal davon gehört,dass man programme auch direkt binär schreiben kann/könnte... dann kam immer wieder der name der programmiersprache "assemler" auf. ich weiss dass assembler programme plattform- und sogar hardwareabhängig sind...wo liegt dann der vorteil? schnelligkeit? (weil --> gegenteil von java und java = langsam)
was schreibt man für programme in assembler?mfg FlipsTar
seit wann ist ASS plattform und hardwareunabhängig? ASS ist dies eben nicht. Denn nimm mal Microcontroller, allein da gibts mega unterschiede ansetuerung der IO und ISR usw. oder code in ASS für den neuesten intel und den ältesten intel
oder amd 64.
-
Assembler ist ist die schnellste Programmiersprache, wenn man es kann.
Ein Compieler übersetzt jede Hochsprache in mehr oder weniger guten Objektcode.
Der Objektcode besteht aus Hexdezimalen Zahlen die später im Ram als "Progamm"
stehen.
Dieser Objektcode entspricht, dem was ein Microcontroller aus seinem
(Programmm) Ramspeicher liest "Ein Microcontroller funktioniert rein Hardware-
mässig" d.h. er liest aus dem Ramspeicher einen Binärcode und dieser veranlasst
die Harware Microcontroller zu einer Aktion).
Eine Hochsprache wie C Compiliert ein Progamm in eine Binäre Sprache die der
Microcontroller / Prozessor versteht.Mit Assembler übergehst du den Compieler und "sprichst" direkt mit dem
Microcontroller/ Prozessor.Übrigens,
ein Mocrocontroller hat seinen Programmspeicher innerhalb des Gehäuses, ein Microprozessor ausserhalb.Gruß
Johann
-
Assembler ist ist die schnellste Programmiersprache, wenn man es kann.
rofl
-
cd9000 schrieb:
Gute C/C++-Compiler generieren auch SSE/SSE2/3DNow!/etc-Befehle.
das wollte ich mal nachtesten. wohl prädestiniert dazu sind addierbefehle auf ganze arrays und ähnliches. da habe ich mit handgeschriebenen asm routinen, die mmx benutzen, temposteigerungen von teilweise mehr als faktor 4 gegenüber maximal optmiertem gcc (3.2) code erhalten.
wenn der compiler etwas mit SIMD techniken optimieren sollte dann wohl sowas...hermes schrieb:
Assembler ist ist die schnellste Programmiersprache, wenn man es kann.
theoretisch schon, aber der aufwand, den man in der regel beitreiben müsste um besseren code als mit dem compiler zu erhalten, ist so gross, dass es sich garnicht lohnt. was hab ich denn davon mehrfach länger bei der entwicklung zu brauchen, wenn das programm nachher vielleicht 8% schneller läuft oder so...
-
hermes schrieb:
Assembler ist ist die schnellste Programmiersprache, wenn man es kann.
Nein, die schnellste ist Maschinensprache.
-
Kurz gesagt ist Assembler die einzige Programmiersprache die der Prozessor versteht, also ohne Assembler keine anderen Programme.
Ein Assemblerbefehl besteht ausschließlich aus 0 (Nullen) und 1 (Einsen) und wird "seriell" abgearbeitet, auch wenn es bei den heutigen Prozessorleistungen nicht mehr auffällt.
Assembler ist eine der schlanksten Programmiersprachen, aber auch eine der kompliziertesten.
-
japro schrieb:
cd9000 schrieb:
Gute C/C++-Compiler generieren auch SSE/SSE2/3DNow!/etc-Befehle.
[...], temposteigerungen von teilweise mehr als faktor 4 gegenüber maximal optmiertem gcc (3.2) code erhalten.
wenn der compiler etwas mit SIMD techniken optimieren sollte dann wohl sowas...GCC kann noch nicht vektorisieren. Der Intel Compiler kann's.
-
bo.essen schrieb:
Kurz gesagt ist Assembler die einzige Programmiersprache die der Prozessor versteht, also ohne Assembler keine anderen Programme.
Ein Assemblerbefehl besteht ausschließlich aus 0 (Nullen) und 1 (Einsen) und wird "seriell" abgearbeitet, auch wenn es bei den heutigen Prozessorleistungen nicht mehr auffällt.
Assembler ist eine der schlanksten Programmiersprachen, aber auch eine der kompliziertesten.
Eben nicht. Das ist Maschinensprache.
-
newkid schrieb:
FlipStar schrieb:
hallo,
ich habe mal davon gehört,dass man programme auch direkt binär schreiben kann/könnte... dann kam immer wieder der name der programmiersprache "assemler" auf. ich weiss dass assembler programme **plattform- und sogar hardwareabhängig sind...**wo liegt dann der vorteil? schnelligkeit? (weil --> gegenteil von java und java = langsam)
was schreibt man für programme in assembler?
mfg FlipsTarseit wann ist ASS plattform und hardwareunabhängig? ASS ist dies eben nicht. Denn nimm mal Microcontroller, allein da gibts mega unterschiede ansetuerung der IO und ISR usw. oder code in ASS für den neuesten intel und den ältesten intel
oder amd 64.
Wer lesen kann ist klar im Vorteil! :p
-
Sgt. Nukem schrieb:
Eben nicht. Das ist Maschinensprache.
@Sgt.Nukem
Da muß ich dich dann mal ein wenig korrigierengenaugenommen ist Assembler ein Compiler, der den Code eines "Assemblerprogramms" in Maschinensprache, d. h. in Nullen und Einsen übersetzt. Anders als ein C Compiler hat es der Assembler jedoch sehr einfach, da (fast immer) einer Assembleranweisung genau eine Maschinensprachenanweisung entspricht. Das Assemblerprogramm ist also nur eine für Menschen (etwas) komfortablere Darstellung des Maschinenprogramms.
------------------------------------------------------------------------------
Internet machts möglich
-
bo.essen schrieb:
Sgt. Nukem schrieb:
Eben nicht. Das ist Maschinensprache.
@Sgt.Nukem
Da muß ich dich dann mal ein wenig korrigierengenaugenommen ist Assembler ein Compiler, der den Code eines "Assemblerprogramms" in Maschinensprache, d. h. in Nullen und Einsen übersetzt. Anders als ein C Compiler hat es der Assembler jedoch sehr einfach, da (fast immer) einer Assembleranweisung genau eine Maschinensprachenanweisung entspricht. Das Assemblerprogramm ist also nur eine für Menschen (etwas) komfortablere Darstellung des Maschinenprogramms.
Die Betonung liegt auf "fast immer"... - es ist eben keine 1:1 Übersetzung, wenn man's genau nimmt.
Besonders bei Zeiger-Operationen gibt's 2 unterschiedliche Maschinensprache-Befehle, die vom Assembler aus über einen Befehl "abstrahiert" werden...Fazit: Im Prinzip ist auch Assembler schon eine Hochsprache...