Escolar Documentos
Profissional Documentos
Cultura Documentos
IA-32
Protocolo de chamada a funções
Protocolo de chamada a funções
• Passagem de parâmetros
• Retorno de valores
• Alojamento de variáveis locais
• Preservação de registos do processador
• Conceito de stack-frame
Passagem de parâmetros
• Através de stack
– Ordem: 1.º parâmetro no endereço mais
baixo (convenção VPL)
– Alinhamento: O espaço ocupado é sempre
múltiplo de 4 bytes
• Se for char ou short é colocado nas posições de
menor peso do espaço reservado
– Desalojamento (ajuste de stack): da
responsabilidade do chamador
Gestão do espaço dos argumentos
• O chamador tem que
– colocar os argumentos em stack antes de chamar
– libertar o espaço após o retorno
• Há dois métodos
– Empilhamento e ajuste local
• Empilha os argumentos com (PUSH ... PUSH ... etc.)
• Chama a função (CALL ...)
• Liberta o espaço ocupado (ADD ESP, ...)
– Alojamento permanente
• No início, a função aloja espaço para a maior lista de argumentos
que vai usar (SUB ESP, ...)
• Antes de cada chamada, afecta os valores
(MOV [ESP+...], ... MOV [ESP+...], ... )
• Após cada chamada não faz qualquer ajuste
• No final, liberta o espaço ocupado (ADD ESP, ...)
Retorno de valores
• Em registo – inteiros ou ponteiros
– EAX
– EDX:EAX