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.