Assim como outras arquiteturas 32-bits, ARM trabalha com os tipos de dados Byte, Halfword e Word
com seus bits menos significativos residindo à direita.
Halfword e Word são conhecidos como Word e Doubleword na arquitetura x86, e na arquitetura Motorola(68K) como
Word e LongWord.
Tab. 1: Byte
Byte |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Tab. 2: Halfword
Halfword |
15 |
14 |
13 |
... |
3 |
2 |
1 |
0 |
Tab. 3: Word
Word |
31 |
30 |
29 |
... |
3 |
2 |
1 |
0 |
Uma Halfword é composta de 2 bytes, uma word é composta de 2 Halfwords ou 4 bytes, como pode ser
notado acima. Porém, uma Word/Halfword não pode ser acessada diretamente por bytes.
Os 3 tamanhos de dados acima, utilizam seus bits mais significativos Bit 7, Bit 15 e Bit 31,
respectivamente, como indicadores de sinalização que modificam o intervalo de dados aceito por
cada tipo de dado conforme tabela abaixo:
Tab. 4: Sinalização
Dado |
Não-sinalizado |
Sinalizado |
Byte |
0...255 |
-128...127 |
Halfword |
0...65536 |
-32.768...32.767 |
Word |
0…4.294.967.295 |
-2.147.483.648...2.147.483.647 |
A arquitetura ARM fornece instruções para carregar dados sinalizados/não-sinalizados que estendem
um Byte ou Halfword para formação de um dado 32-bits, baseado no bit mais significativo, não
sendo possível acessar alterar um byte ou halfword menos significativos sem alterar os
mais significativos.
Tab. 5: Sinal Byte
Sinal estendido |
Byte |
FF |
FF |
FF |
F0 |
00 |
00 |
00 |
7F |
Tab. 6: Sinal Halfword
Sinal estendido |
Halfword |
FFFF |
FFF0 |
0000 |
7FFF |