ARM Advanced RISC Machine


I    Evolução da Família;
¡@
II   Esquema geral de funcionamento;
¡@
III  Tipos de dados aceitos;
¡@
IV  Gerenciamento de memória;
¡@
V   Endereçamento de memória;
¡@
VI   Informações de mercado;
¡@
VII  Assembly;
¡@
VIII Estrutura de procedures e functions;
¡@
IX  Exemplos de lógicas em Assembly;
¡@
X   Referências Bibliográficas.

Endereçamento de Memória

Espaço de endereço ¡V A arquitetura ARM utiliza um espaço único de 232 8-bit bytes. São tratados como números sem sinal, percorrendo de 0 até 232 -1.
   Este espaço é considerado ser de 230 32-bit word, o que significa que o endereço é divisível por 4. Por exemplo, o endereço tipo word que compõe A podem ser acessados utilizando A, A+1, A+2, A+3.

O cálculo de endereço normalmente é utilizado através de operações inteiras:
     (endereço da instrução no momento) + (2 ou 4) /* mistura de instrução de 16 e 32-bit*/

Operação utilizada para saber qual instrução será a próxima a ser executada.
Se esta operação ultrapassa excede o topo do espaço endereçado, o resultado é imprevisível.  A partir do ARMv7-M, isso não poderia mais ocorrer devido a utilização do atributo no topo da memória chamado eXecute Never (XN).

Uma violação de acesso será mostrada caso haja tentativa de armazenamento em área não permitida. Qualquer carregamento ou armazenamento que acessa a memória de 0xFFFFFFFF até 0x00000000 é imprevisível.

Utilizando Endian ¡V A arquitetura suporta armazenamento em little endian e big endian, que representam a ordem que os dados serão interpretados, e podem ser vistas na tabela abaixo:

 

31       24

23        6

15       8

7       0

Word em A

Byte{addr+3}

Byte{addr+2}

Byte{addr+1}

Byte{addr+0}

Halfword A

 

 

Byte{addr+1}

Byte{addr+0}

(Utilizando little endian)

 

31      24

23       16

15         8

7         0

Word em A

Byte{addr+0}

Byte{addr+1}

Byte{addr+2}

Byte{addr+3}

Halfword A

 

 

Byte{addr+0}

Byte{addr+1}

(Utilizando big endian)

A arquitetura suporta a configuração da utilização de little ou big endian para os acessos de dado, porém as instruções de carregamento para CPU (Fetch) são sempre em little endian.

Leitura e gravação de dados na SCS (System Control Space) são sempre em little endian.

¡@

Voltar