Was kann man mit Assembler anfangen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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

2
@tunik123

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

1
@KarlRanseierIII

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.

1

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.

Was möchtest Du wissen?