Objetivos
Tipos de Dados
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. Uma Word ou Halfword não podem ser acessadas diretamente por seus bytes sendo apenas
possível via instruções lógica e deslocamento.
A partir do dados de tamanho 8, 16-bits e 32-bits, os seguintes tipos de dados derivados podem ser
declarados e utilizados de acordo com a necessidade do software:
Tipo 4: array de bytes
| RAM |
0100 |
0101 |
0102 |
(...) |
| Valor |
00h |
01h |
10h |
aah |
Tipo 5: string ascii
| 0 |
1 |
2 |
(...) |
| 'o' |
'l' |
'a' |
(...) |
Tipo 6: array de halfword
| RAM |
0100 |
0102 |
(...) |
| Valor |
3412h |
7856h |
(...) |
Tipo 7: Array de ponteiro
| RAM |
0100 |
0104 |
(...) |
| Valor |
FFFF0000h |
FFFF1234h |
(...) |
Os dados mostrados acima são declarados no código utilizando diretivas específicas fornecidas
pelo assembler em que informamos na linha de código qual o tamanho do dado que deve ser usado.
Tipos de dados mais complexos como structs e strings multibytes são declarados utilizando como
base os tipos de dados vistos fundamentais byte, halfword e word.
Tipo 8: Struct
| RAM |
0000 |
0001-2 |
0003-5 |
(...) |
| Valor |
FFh |
1234Fh |
'olá' |
(...) |
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. 9: 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. 10: Sinal Byte
| Sinal estendido |
Byte |
| FF |
FF |
FF |
F0 |
| 00 |
00 |
00 |
7F |
Tab. 11: Sinal Halfword
| Sinal estendido |
Halfword |
| FFFF |
FFF0 |
| 0000 |
7FFF |
O carregamento de halfword mais altas em registradores é feita utilizando instruções de
deslocamento.
Histórico de atualizações
- 22/04/2026 - revisão 1 - Ajustes: 'objetivos, pontuais; Adição: tipos derivados
- 27/01/2025 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.