Procedimentos e funções

Entrada e saída do procedimento

Valores

Estrutura de activação contém

Convenção para a chamada de procedimentos

Registo $sp indica a última posição ocupada na pilha

Início da chamada

  1. guarda os registos a preservar ($t?, $a?, ...)
  2. coloca os argumentos em $a0 ... $a3
  3. coloca os restantes argumentos na a pilha (arg5, arg6, ...)
  4. salta para o bloco de código do procedimento: jal etiqueta


Início do bloco de código do procedimento

  1. reserva espaço para a estrutura: addiu $sp, $sp, -espaço
  2. guarda registos que vão ser alterados localmente
    $s0 ... $s7, $ra

Fim do bloco de código do procedimento

  1. actualiza $v0 (e $v1) com o valor de retorno
  2. recupera os valores iniciais dos registos alterados
  3. liberta o espaço da estrutura: addiu $sp, $sp, espaço
  4. regressa ao código de chamada jr $ra


Fim da chamada

  1. liberta o espaço dos argumentos colocados na pilha
  2. recupera os valores iniciais dos registos preservados ($t?)