Notas de Aula - MAC 211 - Laboratório de Programação
Aula anterior (aula 6)
Aula 7 - 19/3/2002
-
Funções
-
Antes de estragar o valor dos registradores, guardá-los na pilha
-
variáveis locais na pilha
-
passagem de parâmetros na pilha
-
valor de retorno na pilha ou em EAX
-
%esp - stack pointer (usa automaticamente o segmento da pilha ss)
-
%ebp - base da pilha (idem)
-
Mostrar o codigo de um programa que use funcoes.
- responsabilidade do chamador:
- empilhar argumentos
- chamar função
- liberar espaço dos argumentos
- Responsabilidade da função chamada:
- salvar BP do chamador
- salvar todos os registradores que vão ser afetados
- alocar espaço para variáveis locais
- realizar trabalho usando argumentos e variáveis locais
- setar valor de retorno
- desalocar espaço para variáveis locais
- restaurar registradores afetados
- restaurar BP
- retornar
PILHA genérica valor de retorno em ax ou eax:
- variáveis locais
- registradores salvos
- ebp
- endereço de retorno
- argumentos (empilhados na ordem inversa em C, na ordem normal em PASCAL)
PILHA genérica valor de retorno na pilha:
- variáveis locais
- registradores salvos
- ebp
- endereço de retorno
- valor retornado
- argumentos (empilhados na ordem inversa em C, na ordem normal em PASCAL)
PILHA no programa Funcoes.att
temp3 |
temp3 |
temp2 |
temp2 |
temp1 |
temp1 |
dx |
dx |
ax |
ax |
ebp <- ebp |
ebp |
ebp |
ebp 4 |
RET |
RET |
RET |
RET 4 |
valor retornado |
valor retornado |
A |
A 2 |
B |
B 2 |
C |
C 2 |
Próxima aula (aula 8)
Página de MAC211
Página do Fabio
Página do DCC