Assembler - was is das genau???



  • 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 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.

    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 korrigieren 🤡 genaugenommen 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 korrigieren 🤡 genaugenommen 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... 😉


Anmelden zum Antworten