Niveau:3
Nous allons faire un programme qui écrit « Hello World Raspberry » en mode console.
Le programme:
Copier le programme ci-dessous dans votre IDE.
.data msg: .ascii "Hello World Raspberry\n" len = . - msg .text .globl main main: /* Ecriture du message via la fonction syscall ) */ mov r0, #1 /* Dans le registre r0 =1 mode sortie du message */ ldr r1, =msg /* Dans le registre r1 adresse du message */ ldr r2, =len /* Dans le registre r2 longueur du message */ mov r7, #4 /* Mode écriture syscall #4 */ swi #0 /* Appel de le fonction syscall Permet l'affichage du message */ /* Sortie via la fonction syscall */ mov r0, #0 /* status -> 0 */ mov r7, #1 /* Mode sortie #1 */ swi #0 /* Appel de la fonction syscall */
Explication de la fonction syscall:
Ce procédé interagit avec le système d’exploitation en exécutant des appels système . Un appel système est conceptuellement comme appeler une fonction, mais en plus sophistiqué.Dans le système Linux ARM, nous pouvons effectuer un appel système en utilisant l’instruction swi (Software Interrupt) . Sous Linux, nous utiliserons toujours swi # 0 pour effectuer un appel système.
Un système d’exploitation, et notamment Linux, offre beaucoup de services par le biais d’appels système de sorte que nous devons trouver un moyen pour sélectionner l’un d’eux.
Nous allons le faire en utilisant le registre R7 . Les arguments sont passés dans les registres R0 à R6 . Si l’appel système renvoie une certaine valeur, il sera retourné dans le registre R0 .
Valeur possible du registre R7:
1 sys_exit
2 sys_fork
3 sys_read
4 sys_write
5 sys_open
6 sys_close
.ascii: Permet de mettre un texte en mémoire dans la zone des données.
Compiler votre programme et lancer votre programme.
Voila on affiche bien Hello World Raspberry.