Das erste Programm "Hello World": Unterschied zwischen den Versionen
Aus C und Assembler mit Raspberry
Die Seite wurde neu angelegt: „ <syntaxhighlight lang="asm"> .global _start _start: mov x0,#1 ldr x1,=helloworld mov x2,#13 mov x8,#64 svc 0 mov x0,#0 mov x8,#93 svc 0 .data helloworld: .ascii "Hello World!\n" helloworldlen: .word .-helloworld </syntaxhighlight> <syntaxhighlight lang="shell"> as -o HelloWorld.o HelloWorld.s ld -o HelloWorld HelloWorld.o </syntaxhighlight>“ |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
Nach der ersten Theorie wollen wir endlich mal etwas Programmieren. In den meisten Programmiersprachen wird mit einem einfachen Programm begonnen, welches oft einfach auf den Bildschirm ein "Hello World" ausgibt. Auch hier machen wir dies. | |||
<syntaxhighlight lang="asm"> | |||
.global _start //Definition der Einsprungsadresse als GLOBAL | |||
_start: //Label, für den Start des Programms | |||
mov x0,#1 //Setze das Register x0 auf 1 (StdOutput) | |||
ldr x1,=helloworld //In x1 ein Zeiger auf den String | |||
mov x2,#13 //x2 wird die Länge des Strings angegeben | |||
mov x8,#64 //Systemcall für Output | |||
svc 0 //Führe den Systemcall aus | |||
mov x0,#0 //x0 auf 0: Kein Fehler | |||
mov x8,#93 //Systemcall für Exit | |||
svc 0 //Führe den Systemcall aus | |||
.data //Definition des Datenbereichs | |||
helloworld: //Label für den String, der angezeigt werden soll | |||
.ascii "Hello World!\n" //Der String selbst | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Zeile 22: | Zeile 21: | ||
as -o HelloWorld.o HelloWorld.s | as -o HelloWorld.o HelloWorld.s | ||
ld -o HelloWorld HelloWorld.o | ld -o HelloWorld HelloWorld.o | ||
./HelloWorld | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Version vom 20. November 2024, 11:12 Uhr
Nach der ersten Theorie wollen wir endlich mal etwas Programmieren. In den meisten Programmiersprachen wird mit einem einfachen Programm begonnen, welches oft einfach auf den Bildschirm ein "Hello World" ausgibt. Auch hier machen wir dies.
.global _start //Definition der Einsprungsadresse als GLOBAL
_start: //Label, für den Start des Programms
mov x0,#1 //Setze das Register x0 auf 1 (StdOutput)
ldr x1,=helloworld //In x1 ein Zeiger auf den String
mov x2,#13 //x2 wird die Länge des Strings angegeben
mov x8,#64 //Systemcall für Output
svc 0 //Führe den Systemcall aus
mov x0,#0 //x0 auf 0: Kein Fehler
mov x8,#93 //Systemcall für Exit
svc 0 //Führe den Systemcall aus
.data //Definition des Datenbereichs
helloworld: //Label für den String, der angezeigt werden soll
.ascii "Hello World!\n" //Der String selbst
as -o HelloWorld.o HelloWorld.s
ld -o HelloWorld HelloWorld.o
./HelloWorld