Microsoft powerpoint - ac2_slides_aula04_mac1_procedimentos.ppt

Linguagem assembly do MAC-1:Funções e procedimentos Durante a execução de um programa são invocadas funções e procedimentos (ou métodos)
Ocupa posições de memória consecutivas Variáveis locais
Inserem-se e retiram-se elementos a partir Variáveis que só são válidas dentro do procedimento Argumentos
Valores ou referências passados ao procedimento Quando um procedimento retorna, o CPU necessita de saber qual o ponto do programa para onde se volta Todos estes dados são guardados num espaço da memória designado por pilha (ou stack)
pilha no registo Stack Pointer (SP)
Invocação e retorno de procedimentos
Quando se invoca um procedimento (call), o valor de Program Counter (PC) é copiado para pilha.
Esse valor é o endereço de retorno – ponto para
Mnemónica Descrição
Significado
onde o programa volta após o procedimento retornar SP ← SP – 1; M[SP] ← PC; PC ← x Call function or procedure Para a rotina retornar, o endereço de retorno é transferido da pilha para PC (retn).
x é um endereço entre 0 e 4095, ou uma label que represente esse endereço.
Corresponde à posição do programa onde começa a rotina.
Quando se pretende devolver um valor, coloca-se esse valor no Acumulador (AC), antes da função retornar Manipulação básica da pilha
Invocar a função ou procedimento usando call Criar e descartar as variáveis locais (ou outros dados Mnemónica
Descrição
Significado
Criar as variáveis locais, reservando espaço na pilha “Destruir” as variáveis locais, descartando-as da pilha n é um valor entre 0 e 255, e especifica o número de posições que se querem acrescentar ou retirar à pilha.
Endereçamento local
Exemplo:
Acesso a dados guardados na pilha, com destaque uma função que calcula a soma de dois números para as variáveis locais e argumentos dos public class Exemplo
public static int s = 0; // s – variável global
Mnemónica
Descrição
Significado
public static int soma( final int x, final int y)
{

return x + y;
public static void main(String[] args)
{

s = soma(10, 15);
n designa a posição relativa a SP.
Será portanto a n-ésima posição da pilha a contar do topo.
Exemplo: evolução da pilha
jump main
jump main
main: loco 10
main: loco 10
# colocar os argumentos no stack:
# passar o 10 (1º argumento)
# passar o 15 (2º argumento)
call soma
call soma
# chamar a rotina
# descartar os argumentos
# guardar o valor em s
7 (end. ret.)
soma: lodl 2
soma: lodl 2
# carregar x (da pilha)
# somar a y (da pilha)
# retornar (em AC está x+y)
jump main
# soma_n(int n)
Exemplo: soma dos n primeiros naturais
# exemplo
soma_n: loco 0
Pretende-se implementar uma função que devolve a push # int soma=0
soma dos n primeiros números inteiros naturais.
call soma_n # soma_n(10)
insp 1

subl 0 # n-i
// Possível código da função (em Java)
# while n-i>=0
lodl 1
addl 0

public static int soma_n( final int n )
stol 1 # soma=soma+i
int soma = 0;
addl 0
stol 0 # i=i+1

for (int i=1; i<=n; i++)
Organização da pilha dentro de ‘soma_n’ jump ciclo
soma = soma + i;
lodl 1 # AC=soma
return soma;
Exemplo: divisão inteira
Possível solução:utilizar o método das subtracções sucessivas: Pretende-se implementar função que devolve o quociente da divisão inteira entre dois números inteiros // Possível código da função (em Java)
public static int div( int D, final int d )
while (D >= d)
{

q++;
D = D - d;

Nota: Esta função pode ser útil, pois na linguagem assembly do processador MAC-1 não existe nenhuma instrução para dividir… return q;
jump main
# div(int D, int d)
loco 5
push

ciclo: lodl 3
# div(11,5)
# while D>=d
loco 1
addl 0
stol 0 # q++
lodl 3
subl 2
stol 3 # D=D-d

Organização da pilha dentro de ‘div’ jump ciclo
lodl 0 # AC=q
insp 1
retn

Source: http://ac2.dcti.iscte.pt/ac2-2009-10/material/acetatos/ac2_slides_aula04_mac1_procedimentos.pdf

danielepozzi.joomlafree.it

Public Economics and Economic History (A78606) – Year 2013 Module III: The development of modern market economy, an historical perspective Lecturer: Dr. Daniele Pozzi, The module will present a long-run perspective on the development of modern capitalism and the role of State in it. Through the presentation of historical cases, the module will offer to the students a perspective whic

Tabac3

Préfecture de La Réunion Direction régionale des affaires sanitaires et sociales OBSERVATOIRE REGIONAL DE LA SANTE DE LA REUNION - MAI 2008 Bilan 2007 mitigé : des efforts importants en termes de prévention, de soins et de prise en charge … mais baisse très légère des ventes de cigarettes • Les trois causes de décès les plus directement liées au tabagisme (cancers du poumon, br

Copyright © 2010 Find Medical Article