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 8086 como processador principal. O 8086 possui apenas a segmentação que deve ser levada em consideração.

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 ser 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.

  1. 27/01/2025 - versão inicial