Você está na página 1de 9

RELATÓRIO DE ESTUDO – PADRÃO ATPCS

1...3. Valores de retorno……………………………………………………………… EXEMPLO…………………………………………………………………….. Registradores…………………………………………………………………… Chamada da sub-rotina………………………………………………………… Passagem de parâmetros………………………………………………………... 1. 1..4. 3 3 4 4 4 5 9 ...SUMÁRIO 1. 1.. 3.. O PADRÃO ATPCS……………………………………………………....2...1.. REFERÊNCIAS………………………………………………………………. 2.

Funcionalidade aprimorada (facilidade de depuração e utilização de bibliotecas compartilhadas como apoio). e Modularidade de código. 1. quando unidas. O uso de diferentes linguagens como C++ e Assembly por meio do padrão ATPCS resulta em algumas vantagens:     Tamanho do código reduzido.3 1.1. Figura 1 – Registradores no padrão ATPCS Fonte – The ARM-THUMB Procedure Call Standard Manual Os primeiros 4 registradores (r0 – r3). a Figura 1 exemplifica os registradores. Aumento de performance. funcionar adequadamente. rotulados de a1 a a4 são usados para a passagem de parâmetros para dentro da rotina e também como valores de retorno da . Registradores Os registradores tem funções diferentes no padrão ATPCS. O padrão descreve obrigações da função chamadora e chamada. O PADRÃO ATPCS – ARM-THUMB Procedure Call Standard O padrão ATPCS define como sub-rotinas podem ser escritas e compiladas separadamente para.

via um parâmetro de endereço. o r13 o SP (stack pointer). O resultado é um “salto do programa”. Os registradores r12 a r15 têm funções especiais. Passagem de parâmetros A lista de valores de parâmetros é convertida para valores inteiros de 32 bits (words) e os valores são armazenados em words consecutivas na memória. No padrão. 1.2. o controle é transferido para o endereço da sub-rotina. mas indiretamente pela memória. O registrador LR serve como um parâmetro adicional cujo conteúdo é o endereço de retorno para o código da função chamadora. Pode retornar valores de 2-4 words em a1-a2. a rotina chamada não tem a necessidade de preservar os valores de r0 a r3. o excedente é armazenado na pilha. Pode retornar um valor de 1 word em a1. IP (R12) e LR (R14). Valores de retorno A função pode retornar um valor que ocupe um ou mais words.4. respectivamente. . ou a1a4. Os registradores de r4 a r11 são usados como registradores locais. Esses valores são passados para a rotina carregando as 4 primeiras words em r0 a r3. Caso sejam passados mais parâmetros.3. armazenar o endereço da próxima instrução que será buscada pelo processador (PC – r15) no registrador link register (r13) e depois mudar o valor de PC para o endereço da sub-rotina. mas preserva r4-r11 e SP. 1. Estes são rotulados de v1 a v8. O r12 guarda o valor de IP (intra-procedure-call). Chamada da sub-rotina A ação de chamar uma sub-rotina é. mas apenas v1 até v4 podem ser utilizados uniformemente pelas intruções Thumb.4 rotina. Pode retornar um valor maior que 4 words. 1. basicamente. a1-a3. o r14 o LR (link register) e o r15 o PC (program counter).

os parâmetros são passados da seguinte maneira :     R0 . Na Figura 2 pode-se observar o momento em que se entra na sub-rotina. R0. 3 e 4 esclarecem o procedimento de execução do programa.r). #4 ADD R1. 19. r=2.Endereço do primeiro elemento do vetor v R1 – termo inicial R2 – número de termos da progressão R3 – razão Para n=10. A Figura 4 mostra o programa executando o loop while(1).n. Função c #define n 2 unsigned int num=5. a=2. unsigned int v[n].num. R14 END Quando entra na sub-rotina.a=0. void main(void) { progressao(&v. com razão “r” e termo inicial “num”. tem como objetivo calcular uma progressão aritmética de “n” termos. 7. 17. num=5 e r=2 espera-se a seguinte progressão: 5. #1 BNE progressao MOV PC. } } Função assembly progressao: STR R1. EXEMPLO O programa deste exemplo é simples. As Figuras 2. enquanto que a Figura 3 mostra o momento em que se sai da rotina e se realiza a=2. 13. 9. while(1) { a=1. R1. R2.5 2. R3 SUBS R2. [r0] ADD R0. 11. . 21 e 23. 15.

6 Figura 2 – Tela 1 do programa exemplo em execução .

7 Figura 3 – Tela 2 do programa exemplo em execução .

8 Figura 4 – Tela 3 do programa exemplo em execução .

24 oct. Development Systems Business Unit. . 2000.9 3. REFERÊNCIAS The ARM-THUMB Procedure Call Standard.