Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuiz Eduardo Aragão Amado Alterado mais de 8 anos atrás
1
Arquitetura ARM Subrotinas
2
Implementar uma sub-rotina requer dois passos: 1.Armazenar o endereço de retorno. 2.Desviar a execução para o endereço da sub-rotina. Quem executa esses dois passos: instrução BL label Armazena endereço de retorno em LR (R14). A execução é desviada para a posição de memória identificada por “label”. O retorno da sub-rotina se dá pela instrução BX LR, a qual carrega no registrador PC o conteúdo de LR. Problema! Onde?
3
Subrotinas ENDEREÇO DE RETORNO DA SUBROTINA! 11MOV R1,R2 12BL SUB1 13... 14 20SUB1:... 21BL SUB2 22... 23BX LR 40SUB2:... 41... 42BX LR 43 1322 R14(LR) Como solucionar? Por exemplo, uso da Pilha!
4
Subrotinas Passagem de Parâmetros Por Registradores Por Pilha Por valor Por Referência Como os dados são enviados para a subrotina? Não altera o conteúdo da memória Altera o conteúdo da memória
5
Subrotinas São instruções simbólicas, não executáveis, que auxiliam o montador a determinar o conteúdo da memória ao instalar o programa assembly. x:.word 5000 LDR R2, =x LDR R1,[R2] Para que a passagem de parâmetros efetivamente ocorra, é possível recorrer a pseudoinstruções. Pseudoinstruções Cria uma palavra na memória cujo conteúdo é 5000 Armazena o endereço da palavra “x” em R2 Armazena o valor de x em R1
6
Subrotinas - É passado o endereço de memória que contém o dado. x:.word 5000 LDR R2, =x Por valor Passagem de Parâmetros Por Referência - É passado o dado da memória. x:.word 5000 LDR R2, =x LDR R3, [R2]
7
Subrotinas Passagem de Parâmetros x:.word 5000 y:.word 0 LDR R0, =x LDR R1, =y LDR R0, [R0] BL SOMA STR R0, [R1] Por Registrador SOMA: ADD R0, R0, #1 BX LR Exemplo: Subrotina que faz uma soma
8
Subrotinas Passagem de Parâmetros Por Pilha Dados são passados do programa para sub-rotina e vice-versa através da pilha Mas como é a pilha no ARM? Desafio
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.