Was kann man mit Assembler anfangen?
Dass die Sprache der Maschine nah ist weiß ich. Aber kann man sonstwas mit der Sprache machen?
2 Antworten

Die wenigsten Hochsprachen haben Primitive um mit der HW zu kommunizieren, außer eben ggf. Inline-Assembler.
Insofern bleibt Dir nichts anderes als (inline)-ASM, wenn Du hardwarenahe Sachen erledigen möchtest.
Sonst eignet es sich natürlich hervorragend, um dem eigenen Masochismus zu frönen. Die Zeiten, in denen Du mit handgeschriebenem ASM noch richtig viel reißen konntest ist lange vorbei. Ein typischer Nischenbereich sind hier noch Codecs wie h264 und ähnliches, wenn Du explizit mit spezielleren Einheiten der CPU arbeiten möchest.

Das stimmt schon, wobei ich zu 2 sagen muß: Dafür gibt es ja sowas wie pcc, es muß ja nicht gleich die GCC mit binutils sein, die man portieren muß.
Und ja, auch bei kleinen uCs ist ASM mitunter die bessere Wahl, allerdings sind die ISAs dann auch so übersichtlich, daß das noch ganz gut machbar ist.
Bei den frühen x86 war das mit ASM auch noch eine andere Kiste. Man denke an die guten alten Intros und Demos, wo Du vieles ohne ASM gar nicht umsetzen konntest ...... Oh Nostalgie ...

Das ist für mich keine Nostalgie, das ist mein tägliches Brot. Wenn ich zum Betrieb eines Prozessors nur 1 mA bewilligt bekomme, kann ich keine großen Sprünge machen.

Hier eine Übersicht über "Assembler" :
https://www.mathematik.uni-marburg.de/~loogen/Lehre/ws07/TechInf1/Folien/TechInf1Lo08Folien.pdf
Ein Assembler ist ein Programm, das Befehls-
folgen von der Assemblersprache in die Maschinensprache übersetzt.
Nachteil der Maschinensprache :
Programme in Maschinensprache sind schwer lesbar.
Es können keine Variablennamen, keine Registernamen, keine
symbolischen Sprungziele verwendet werden und kein Platz für
Daten reserviert werden.
Assemblerprogramm
add $t1,$t1,$s5
lw $t0,0($t1)
addi $s3,$s3,4
Durch Assembler
daraus erzeugtes
Maschinenprogramm :
0010101111000011
1000101111001000
101110100000000000000000
Ich weiss nicht, ob in der heutigen Zeit noch die Wichtigkeit besitzt, wie zur Zeit von C64 oder X80/x86, also zu den Anfängen der Computerprogrammierung.
Das stimmt alles. Aber es gibt auch noch andere Grenzfälle, wo man in Assembler programmieren muss.
1. Wenn der Prozessor sehr leistungsschwach ist. Das Problem ist meist, dass im Interesse des niedrigen Stromverbrauchs die Taktfrequenz auf ein Minimum reduziert wird. Ich als Programmierer versuche aber meist, mit C auszukommen und in vielen Iterationen das Programm so hinzuschreiben, dass der erzeugte Maschinencode mir gefällt.
2. Es gibt Prozessoren, für die es keine Compiler gibt. Da kann man froh sein, einen Assembler zu haben. Notfalls muss man sich selber einen programmieren.