Costanti aritmetiche
Il linguaggio assembler fornisce costanti aritmetiche che dipendono dalla modalità assembly.
Il linguaggio assembler fornisce quattro tipi di costanti aritmetiche:
- Decimale
- Ottale
- Esadecimale
- Virgola mobile
In modalità a 32 bit, il numero intero positivo con segno più grande che può essere rappresentato è il valore decimale (2 * *31) - 1. Il valore negativo più grande è - (2 * *31). In modalità a 64 bit, il numero intero positivo con segno più grande che può essere rappresentato è (2 * *63) -1. Il valore negativo più grande è - (2 * *63). Indipendentemente dalla base (ad esempio, decimale, esadecimale o ottale), l'assembler considera i numeri interi come costanti a 32 bit.
L'interpretazione di una costante dipende dalla modalità di assemblaggio. In modalità a 32 bit, l'assembler AIX® funziona allo stesso modo delle versioni precedenti di AIX® : l'assembler considera i numeri interi come costanti a 32 bit. In modalità a 64 bit, tutte le costanti vengono interpretate come valori a 64 bit. Ciò può portare a risultati diversi dalle aspettative. Ad esempio, in modalità 32 bit, il valore esadecimale 0xFFFFFFFF equivale al valore decimale "-1". In modalità a 64 bit, tuttavia, l'equivalente decimale è 4294967295. Per ottenere il valore "-1" si deve usare la costante esadecimale 0xFFFF_FFFF_FFFF_FFFF (o l'equivalente ottale), oppure il valore decimale -1.
In entrambe le modalità a 32 bit e a 64 bit, il risultato delle espressioni integer può essere troncato se la dimensione dell'area di storage di destinazione è troppo piccola per contenere un risultato dell'espressione. (In questo contesto, il troncamento si riferisce alla rimozione dei bit più significativi in eccesso.)
Per migliorare la leggibilità delle costanti di grandi dimensioni, in particolare i valori a 64 bit, l'assembler accetterà le costanti contenenti il carattere di sottolineatura ("_") carattere. Il carattere di sottolineatura può essere visualizzato in qualsiasi punto all'interno del numero, ad eccezione della prima posizione numerica. Ad esempio, si consideri la seguente tabella:
| Valore costante | Valido / Non valido? |
|---|---|
| 1_800_500 | Valido |
| 0xFFFFFFFF_00000000 | Valido |
| 0b111010_00100_00101_00000000001000_00 | Valido (questa è l'istruzione "ld 4,8 (5)") |
| 0x_FFFF | Non valido |
Il terzo esempio mostra una rappresentazione binaria di un'istruzione in cui i caratteri di sottolineatura vengono utilizzati per delineare i vari campi all'interno dell'istruzione. L'ultimo esempio contiene un prefisso esadecimale, ma il carattere immediatamente seguente non è una cifra valida; la costante non è quindi valida.