Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Sobre a Memória
  2. Mapeamento de memória
  3. Armazenamento de dados
  4. Alinhamento de dados

A arquitetura armv4 define que um espaço endereçado de 4GB esteja disponível para a execução de programas. Abaixo, um exemplo de uso da memória:

Tab. 1: Uso de memória
Memória Uso
0x00000000 Código
0x10000000 Dados
0x20000000 Vídeo
0x30000000 Áudio
0x40000000 Entrada e Saída

O mapeamento da memória fica a ser definido pelo hardware que utiliza o processador baseado em ARM. Não há nenhum mapeamento ou área reservada, exceto o vetor de interrupções(Hard Vectors) quando seguida a implementação padrão predefinida.

Abaixo um exemplo de mapeamento memória real de hardware que utiliza um processador ARMv7TDMI:

Tab. 4: Exemplo de mapeamento
Ínicio Fim Uso
0x00000000 00003FFF BIOS
0x00004000 01FFFFFF -
0x02000000 0203FFFF WRAM
0x02040000 02FFFFFF -
0x03000000 03007FFF WRAM
0x03008000 03007FFF -
0x04000000 040003FE I/O
0x04000400 04FFFFFF -

O uso, definição do mapeamento é de total responsabilidade do hardware que utiliza o processsador ARM como processador principal ou secundário.

Por padrão, um processador ARM lê dados armazenados em memória na ordem Little-endian. Isso significa que os bytes menos significativos são armazenados primeiro, seguidos dos mais significativos.

O valor 0xAABBCCDD, em Little-endian, ficará armazenado em memória com seus bytes na ordem 0xDDCCBBAA. Dependendo da implementação do processador, o formato big-endian pode ser utilizado.

O mesmo vale para valores Halfword que tem seus bytes armazenados, obviamente, da mesma forma. Um valor 0xAABB é armazenado em memória como 0xBBAA.

Tab. 3: Dados Halfword e Word em memória
Endereço 00 01 02 03 (...) 0C 0D 0E 0F
00000000 DD CC BB AA (...) -- -- -- --
00000010 BB AA -- -- (...) -- -- -- --

Por questões de performance, o acesso a dados, tanto na leitura quanto na escrita na arquitetura ARM devem acontecer em endereços de memória alinhados. Valores Halfword devem estar alinhados em endereços múltiplos de 2 e valores Word devem estar alinhados em endereços múltiplos de 4. Não há restrição para o tipo de dado Byte.

Tab. 3: Dados Halfword e Word em memória
Endereço 00 01 02 03 (...) 0C 0D 0E 0F
FA000000 Byte0 Byte1 (...) -- -- -- --
FB000000 -- -- Halfword (...) -- -- -- --
FF000000 Word (...) -- -- -- --

Na tabela acima, temos Byte0 e Byte1 em endereços pares e ímpares, uma halfword em um endereço par alinhado em 2 bytes e uma word com endereço par alinhado em 4 bytes.

O suporte a acesso a dados em endereços não alinhados para valores Halfword e Word está disponível apenas nas arquiteturas v7+.

O assunto registrador mapeado em memória será visto em Entrada e Saída.

ARM possuir instruções de Entrada e Saída de Dados(E/S) para comunicaçao via portas lógicas. Isso é possível utilizar regiões da memória como registradores de E/S.

Tab. 5: Registrador mapeado em memória
Endereço Descrição
04000000h Config. Vídeo
04000200h Controle de interrupção
040000B0h Controle de DMA

Um chip específico deve ser utilizado para mapear endereços de memória como registradores para gerenciar o funcionamento semelhante ao uso de portas como em 8086.

Com esse tipo de registrador, as instruções de movimentação, load e store devem ser utilizadas.

Mesmo contendo 4GB de memória acessível, um processador ARM pode, dependendo do hardware, utilizar bancos de memória para expandir sua memória utilizando bancos.

Essas bancos podem ser utilizados para carregar o kernel, sistema operacional e programas do usuário.

Abaixo, um exemplo de bancos de memória utilizando o um processador ARM para armazenar bancos de programção:

Tab. 6: Bancos de memória
Região Tamanho Descrição
08000000-09FFFFFF 32MB ROM 0
0A000000-0BFFFFFF 32MB ROM 1
0C000000-0DFFFFFF 32MB ROM 2

O uso, definição de endereço e outras configurações é de total responsabilidade do hardware que utiliza o como processador principal. O 8086 não possui nenhum mapeamento de banco nativo tendo apenas a segmentação de memória definida.

  1. 22/04/2026 - revisão 1 - Ajustes: 'objetivos' e 'alinhamento'; Adição: banco de memória e registrador mapeado.
  2. 27/01/2025 - versão inicial