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.

Conjunto de Instruções

A arquitetura ARM trabalha com dois tipos de instruções: o ARM e o THUMB.
O conjunto de instruções ARM pode ser dividido em 6 classes:
¡V instruções de branch
¡V instruções de processamento de dados
¡V instruções de acesso ao registrador de estado
¡V instruções de load e store
¡V instruções do coprocessador
¡V instruções geradoras de excessões

A maioria destas instruções contêm um campo de condição de 4 bits. Estas condições são ativadas através de sufixos que são colocados junto com os minemônicos das instruções. Por exemplo, um salto (B) pode ser acompanhado de um NE (not equal), o que gera uma expressão BNE. Essa instrução só será executada caso a condição seja verdadeira.

¡@

INSTRUÇÕES DE BRANCH

Todos os processadores ARM suportam instruções de branch com saltos condicionais para frente ou para trás de até 32M. Saltos mais longos podem ser feitos através de chamadas de subrotinas como por exemplo o Branch whith Link (BL) que mantem o endereço de retorno no LR (R14).

A instrução BX permite a troca entre o estado ARM e o estado THUMB. Esta instrução copia o conteudo de um registrador de propósito geral para o PC. Caso o bit[0] do valor transferido para o PC seja 1, o processador troca para o estado THUMB.

INSTRUÇÕES DE PROCESSAMENTO DE DADOS

O ARM possui 16 instruções mostrada na tabela a seguir:

INSTRUÇÕES DE ACESSO AO REGISTRADOR DE ESTADO

Existem duas instruções para mover os conteúdos de um registrador de propósito geral e de um registrador de estado, que são as seguintes:
MRS ¡V move o conteúdo do registrador de estado para um registrador de propósito geral.
MSR ¡V move o conteúdo do registrador de propósito para um registrador de estado.

¡@

INSTRUÇÕES DE LOAD E STORE

A arquitetura ARM suporta dois tipos de instruções de load e store que transferem o conteudo de um registrador para a memória ou ao contrário.

O primeiro tipo pode carregar ou escrever uma parava de 32 bits ou um byte sem sinal.

O segundo tipo pode ler ou escrever meia palavra de 16 bit sem sinal, e pode carregar e sinalizar meia palavra de 16 bit ou um byte. Este tipo de instrução está disponível apenas para a arquitetura ARM versão 4 ou posterior.

Codificação das instruções:

Instrução que lê e carrega palavra ou byte sem sinal:

   I,P, U, W ¡V são bits para distinguir diferenças entre tipos de <addressing_mode>.
        L bit ¡V Diferencia instrução de load (L==1) e store (L==0)
        B bit ¡V Diferencia byte sem sinal (B==1) e palavra(B==0)
        Rn ¡V Especifica o registrador base utilizado por <addressing_mode>
        Rd ¡V Especifica o registrador onde vai ser carregado ou de onde vai ser escrito.

Instrução que lê e carrega meia palavra ou lê um byte sinalizado :

   I,P,U,W ¡V são registradores que especificam o tipo de endereçamento
       
L bit - Diferencia Load (L==1) e Store (L==0)
        S bit ¡V Diferencia meia palavra sinalizada (S==1) e não sinalizada (L==0)
.
        H bit ¡V diferencia meia palavra (H==1) e byte sinalizado (H==0).
        Rn ¡V Especifica o registrador base a ser utilizado pelo modo de endereçamento.
        Rd ¡V Especifica o registrador do qual será lido ou onde será carregado a informação.

 

INSTRUÇÕES GERADORAS DE EXCESSÕES

Existe duas instruções deste tipo:

  a SWI que causa uma interrupção de software. É o mecanismo principal utilizado pelo ARM para poder executar codigos do Sistema Operacional no modo de usuário (User Mode).

  E existe o BKPT. Esta instrução é usada para breakpoints na arquitetura ARM da versão 5 em diante. 

        A codificação destas instruções é a seguinte:

INSTRUÇÕES DO COPROCESSADOR

São instruções para fazer a comunicação com coprecessadores. Elas permitem o processador ARM iniciar uma operação de processamento de um coprecessador. Permite fazer transferencias entre os registradores do processador e dos coprocessadores. E permite também o processador criar enderenços para o coprocessador carregar e escrever instruções.

O CONJUNTO DE INSTRUÇÕES THUMB

O THUMB possui instruções com as mesmas finalidades das instruções ARM, porém são codificadas com 16 bits. Estas instruções THUMB geram códigos menores porém muitas vezes ocorre de aumentar o número de instruções que o processador deve executar. Uma solução para isso são aplicações que utilizam ambos tipos de instruções ( ARM e THUMB). Aplicações deste tipo conseguem reduzir o tamanho do seu código significativamente e conseguem manter o consumo de energia baixo. As codificações de algumas instruções THUMB são as seguintes:

¡@

Voltar