Ein Label in Assembly ähnelt einer Funktion in z.B. Java. Auch benötigt man einen sogenannten "Entry point". Dieser ist vergleichbar mit der main Funktion in Java. Der Entry point ist der Punkt im Programm von dem an Linear ausgeführt wird.
Beispiel: Das folgende Programm quadriert 2
mov R0, #2
b quadrieren --------
|
quadrieren: <-----
mul R1, R0, R0 <----- 1.
Nun ist in R1 4 (2^2)
Man kann auch aus Labels Returnen. Mehr dazu hier
Ein weiteres Beispiel um das Springen zwischen labels weiter zu verdeutlichen wäre folgendes: Ein Programm das unendlich R0 += 1 rechnet
main:
mov R0, #0
b add_infinte
add_infinite:
add R0, #1
b add_infinite
1. Schritt nach start des Programms
main:
mov R0, #0 <=== Jetzt steht in R0 0
b add_infinte
add_infinite:
add R0, #1
b add_infinite
2. Schritt
main:
mov R0, #0
b add_infint <=== Springt zu add_infinite
add_infinite:
add R0, #1
b add_infinite
3. Schritt
main:
mov R0, #0
b add_infint
add_infinite:
add R0, #1 <=== Addiert auf R0 1
b add_infinite
4. Schritt
main:
mov R0, #0
b add_infint
add_infinite:
add R0, #1
b add_infinite <=== Springt zu add_infinite
Die Nächsten Schritte werden sich unendlich wiederholen
main:
mov R0, #0
b add_infint
add_infinite:
add R0, #1 <=== Addiert auf R0 1
b add_infinite
main:
mov R0, #0
b add_infint
add_infinite:
add R0, #1
b add_infinite <=== Springt zu add_infinite