Hello World


Nous allons faire un programme qui écrit "Hello World Raspberry".


Le programme:


.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 faire un test.





Mise à jour 13/04/2015



Créé avec HelpNDoc Personal Edition: Créer des livres électroniques EPub facilement