Mot-clé | Taille | Description |
.byte | 1 octet | 1 caractère ou un entier de 8 bits |
.half .hword .short | 2 octets | demi-mot |
.word .int .long | 4 octets | entier ou flotant standard (1 registre) |
.xword .quad | 8 octets | entier ou flotant long (2 registres) |
.octa | 16 octets | long long (4 registres) (utilisé par les flotants uniquement) |
.float .single | 4 octets | simple flotant |
.double | 8 octets | double flotant |
.string .ascii | variable | Chaîne de caractères |
.stringz .asciz | variable + 1 | Chaîne de caractères, terminée par 0 |
Caractère | Code ASCII 8 bits | ` 'A' (=65) ` 'B' (=66) |
Chaîne | Code ASCII 8 bits | "Hello world\n" "Le résultat est %d.\n" |
Nombre | binaire | commence par '0b' : 0b10111010101011 |
octal | le premier chiffre est un '0' : 012715302455 |
|
hexadécimal | commence par '0x' : 0x9870235abef |
|
décimal | -765193 | |
flotant | 987235.49872e-935 |
Exemple :
.data .align 4 .int 42 .align 8 .double -0.66e666
! début du programme... mov 50, %o1 ! met la valeur 50 dans %o1 mov 0, %o0 ! met la valeur 0 dans %o0 DeCadix: add %o0,1,%o0 ! incrémente %o0 cmp %o0,%o1 ! compare %o0 à %o1 ble DeCadix ! si %o0 <= %o1, va à DeCadix: nop ! delay slot ! suite du programme...
.global ou .globl permet de déclarer un symbole utilisable dans d'autres fichiers objets (.o) linkés à ce module lors de l'appel à ld. Attention, s'il n'y a qu'un source (assembleur), il faut déclarer un label portant le nom main: en global (cf. exemple ci-dessous).
.include "file" : inclure un fichier...
! Ceci est un programme qui affiche "Hello world." .data .align 8 mon_texte: .asciz "Hello world.\n" .text .align 4 .global main main: save %sp,-64,%sp ! nouvelle fenêtre de registres set mon_texte,%o0 ! le paramètre de la fonction appelée est ! placé dans le registre %o0 ! Remarque : ! set est la pseudo instruction remplacée par les deux appels suivants : ! sethi %hi(mon_texte),%o0 ! or %o0,%lo(mon_texte),%o0 call printf,0 ! appel de la fonction printf nop ! delay slot mov 0,%i0 ! valeur de retour de la fonction main : 0 ret ! retour de la fonction restore ! libère la fenêtre de registres pendant le ! delay slot