Muss manches in Assembler geschrieben werden?



  • 8589934592 schrieb:

    Außerdem: Assemblercode kann man ziemlich gut warten, weil ja z.B. die Assemlerstruktur klar vor Augen liegt. In großen C oder anderen Hochsprachen-Programmen können viele Fehler gar nicht erst gefunden werden.

    The fail is strong with this one. 🙄



  • Gewisse Dinge lassen sich nur in ASM realisieren.
    Vor allem sehr hardwarenahe Sachen.

    Zum Beispiel muss das Betriebssystem in der Anfangsphase Paging (eine Form von virtuelle Speicher) aktivieren.

    mov eax, [page_directory]
     mov cr3, eax
    
     mov eax, cr0
     or eax, 0x80000000
     mov cr0, eax
    

    So etwas lässt sich in C nicht realisieren - denn dort hast du keinen direkten Zugriff auf Register.

    Außerhalb vom OS/Treiberbereich sehe ich heute aber wenig Einsatzgebiete für ASM.
    ASM zu verstehen ist gut, vor allem beim Debuggen haben mir halbwegs passable ASM Kenntnisse schon sehr geholfen.
    Dass ich aber tatsächlich in einer Firma ASM programmieren musste, ist mir noch nicht untergekommen.

    Aber weil du Audio erwähnst: Gerade DSP werden heute teilweise immer noch in ASM programmiert, um spezielle Prozessorfunktionen auszunutzen. Ansonsten fallen mir jetzt aber keine Jobbeschreibungen ein, wo ich mal was von ASM gekesen habe.



  • fsdfsdfsxxxx schrieb:

    So etwas lässt sich in C nicht realisieren - denn dort hast du keinen direkten Zugriff auf Register.

    Dafür schreibt man sich (in Assembler) kleine Hilfsfunktionen und macht den Rest dann in C(++).
    Das selbe Prinzip wie die ganze C(++) Standard-Library. In C gibt's nämlich auch keine "Befehle" um Files zu lesen/schreiben etc.



  • hustbaer schrieb:

    fsdfsdfsxxxx schrieb:

    So etwas lässt sich in C nicht realisieren - denn dort hast du keinen direkten Zugriff auf Register.

    Dafür schreibt man sich (in Assembler) kleine Hilfsfunktionen und macht den Rest dann in C(++).
    Das selbe Prinzip wie die ganze C(++) Standard-Library. In C gibt's nämlich auch keine "Befehle" um Files zu lesen/schreiben etc.

    eben - man verwendet ASM, von mir aus eben auch in Form von Inline ASM 😉

    Dateien schreiben/lesen macht sowieso das OS. Die C Funktionen wie fopen, fprintf, fclose usw... sind ohnehin nur ein Wrapper um die OS spezifischen Details. Bei Linux sind das dann die system calls wie open, close, read, write.
    Und die FILE Struktur wiederum muss sich in irgendeiner Form den file descriptor merken, welcher eine bestimmte geöffnete Datei repräsentiert.


Anmelden zum Antworten