Introdução à Arquitetura de Computadores/Suporte à Funções: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Nova página: Funções são ferramentas muito importantes, pois tornam código escrito muito mais usável e torna a tarefa de programar mais produtiva. Elas permitem que um programador se concentre...
(Sem diferenças)

Revisão das 01h30min de 14 de agosto de 2008

Funções são ferramentas muito importantes, pois tornam código escrito muito mais usável e torna a tarefa de programar mais produtiva. Elas permitem que um programador se concentre em apeenas uma tarefa de cada vez. Portanto, é essencial que um processador possua suporte á elas. Veremos como isso ocorre no MIPS.

As Etapas Neceessárias para Invocar Funções

Quando queremos chamar uma função, as seguintes etapas devem ser cumpridas:

  • O programa principal deve colocar os parâmetros da função em um local que ela possa acessar.
  • O programa principal deve ceeder o controle para a função.
  • A função deve coletar todos oos parâmetros deixados pelo programa principal.
  • A função deve executar a tarefa desejada.
  • A função deve aramazenar seus resultados em um lugar em que o programa principal possa acessar.
  • A função deve retornar o fluxo do código para o ponto imediatamente após ser chamada.

Para que estes requisitos sejam cumpridos, as seguintes convenções fora criadas:

  • Os registradores $r4, $r5, $r6 e $r7 seriam usados para armazenar parâmetros de funções. Por causa desta funcionalidade, tais registradores podem ser chamados pelos seus "apelidos": $a0, $a1, $a2 e $a3.
  • Os registradores $r2 e $r3 seriam usados para as funções armazenarem seus valores de retorno para o programa principal.

Tais regras são apenas convenções. Nada impede que um programador as desrespeite e use outros registradores para estabelecer comunicação entre funções e programas principais. Entretanto, para que um programa funcione bem em conjunto com todos os demais, é importante quee tais convenções sejam seguidas.

Além dos registradores convencionados acima, o registrador $r31 também tem um papel importante. Ele sempre armazena o endereço de retorno para o qual a última função chamada deve retornar. Por ter uma função tão importante, este registrador é mais conhecido pelo apelido $ra.