Objetivos
Memória
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.
Histórico de atualizações
- 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.