Programação MAC-1 Exemplo: copiar vector

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

Aquiles Burlamaqui AULA 09
Python: Recursão Claudio Esperança.
Complexidade de Algoritmos Recursivos
Recursividade Inhaúma Neves Ferraz
Recursividade Função recursiva é aquela que chama a si própria.
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Algoritmos de manipulação de estruturas elementares de dados
Programação II Estruturas de Dados
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
O Conjunto de Instruções
Assembly MAC-1 Implementação de ciclos Ciclo ‘while’ // Em Java : ...
1 O Conjunto de Instruções ISA – Instruction Set Architecture.
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
Algoritmos e Estrutura de Dados I
PROCEDIMENTOS COM RECURSIVIDADE
Vetores Declaração – float vetor[5]; Identificação de um elemento – índice variando de 0 a (N-1), N = número de elementos do vetor – Cuidado: o C não checa.
Recursividade Inhaúma Neves Ferraz
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
SVCs para Controle de Processos no Unix
linguagem orientada para problemas nível 5 tradução nível 4 linguagem de montagem tradução nível 3 sistema operacional interpretação nível 2 máquina.
Lista Encadeada Circular Lista Duplamente Encadeada
Programação em Assembly Procedimentos e funções
Arquitecturas RISC Programação em assembly
Programação em assembly
1 Funções (versão C/C++) Em C++ existe uma opção intermédia entre a função e uma macro. Uma função pode ser declarada inline. Nesse caso as funções têm.
Linguagem de Montagem.
João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis.
AJProença, Sistemas de Computação, UMinho, 2013/141 Análise do código de gestão de uma função –invocação e regresso instrução de salto, mas com salvaguarda.
Tipos Abstratos de Dados
1 Tipos Abstratos de Dados Pilhas e Filas TPA – 2008 –1 Prof. Mateus Costa.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
UNIDADE 6 - complemento Funções recursivas
Argumentos por valor Passagem de valor da variável indicada Não permite alteração de variável indicada Exemplo: int quadrado_de(int ); //protótipo int.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Hugo Calazans André Ricardo
Mergesort Katia Guimarães.
Ambiente de Execução - Rotinas
Pilhas Profa. Nádia Félix.
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
A Linguagem de Máquina – Funções e recursividade Prof. André Luis M. Silva orgearq wordpress.com.
8088 Assembly Software Básico Mitsuo Takaki.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
Estudo do MINIX: Parte 2 PCS-2042 –Sistemas Operacionais – 2ª etapa do projeto Erick Butler Poletto Felipe Giunte Yoshida Gabriel Iseppe Porto Geovandro.
Recursividade Profs. De Prog2 e Lab2.
1 Aula 6 – Sumário  Revisão da aula anterior  Endereçamento indirecto  Recursividade  Conceito  Exemplos.
Aula 4 – Sumário Linguagem assembly do MAC-1: Funções e procedimentos
Processador MAC-1 Arquitectura.
Existem 8 registos principais de 32 bits no processador (existem mais como %EIP): %EAX %EBX %ECX %EDX %ESI %EDI %EBP %ESP Os registos são armazenados em.
Algoritmo e Estrutura de Dados I
Geração de Código Difícil de generalizar, devido à variedade de características das máquinas-destino: –Conjunto de registradores (se houver) –Pilha –Instruções.
Professor Luiz José Hoffmann Filho
Linguaguem de Programação II
Estrutura de dados Pilhas e filas
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Programação em Assembly
Programação em assembly
Transcrição da apresentação:

Programação MAC-1 Exemplo: copiar vector Implementar um procedimento que copie n elementos de um vector A para um vector B O procedimento deverá receber como argumentos: O número de elementos a copiar (n) O endereço do primeiro elemento do vector A (referência) O endereço do primeiro elemento do vector B (referência)

Programação MAC-1 jump main A: 6 4 3 5 7 B: 0 0 0 0 0 n: 5 main: lodd n push loco A loco B call copia insp 3 halt copia: loco 0 push # int i=0 ciclo: lodl 0 subl 4 jzer fim # i-n == 0? lodl 3 addl 0 pshi # A[i] no topo da pilha addl 1 popi # B[i] = A[i] loco 1 stol 0 # i=i+1 jump ciclo fim: insp 1 retn Organização da pilha em ‘copia’ SP i End. Ret. B (ref.) A (ref.) n

Processador MAC-1 Recursividade

Programação MAC-1 Recursividade Existem situações em que uma rotina se invoca a si própria... Diz-se que a rotina é recursiva ou recorrente Soluções recursivas podem ser úteis para resolver alguns problemas, mas é preciso ter cuidado pois a pilha pode crescer muito… cada chamada à função faz com que sejam colocados dados na pilha; se a função se chamar demasiadas vezes a ela própria, a pilha pode ficar sem espaço para crescer (“stack overflow”)

Programação MAC-1 Exemplo (recursividade) Fazer uma função que calcule o termo de ordem n da seguinte sucessão (definida de forma recursiva): // Pseudo-código int U(int n) { if (n==1) return 1; else return 2*U(n-1) + 1; }

Programação MAC-1 jump main C1: 1 main: loco 4 push call U # U(4) insp 1 halt # int U(int n) U: lodl 1 subd C1 # AC = n-1 jzer ret1 # if n-1==0 return 1 push # call U # U(n-1) insp 1 # push # temp = U(n-1) addl 0 # AC = 2*temp insp 1 # descarta temp addd C1 # AC = 2*U(n-1)+1 retn ret1: loco 1 # AC = 1

Programação MAC-1 Exemplo (recursividade) Fazer uma função que calcule o número de Fibonnaci de ordem n. O número de Fibonnaci de ordem n é dado por: int fibo(int n) { if (n==1 || n==0) return 1; else return fibo(n-1) + fibo(n-2); }

Programação MAC-1 Organização da pilha em ‘fibo’ fibo: lodl 1 subd C1 # AC = n-1 jzer ret1 # if n-1==0 return 1 lodl 1 jzer ret1 lodl 1 # subd C2 # push # call fibo # fibo(n-2) insp 1 push # tmp = fibo(n-2) lodl 2 # subd C1 # call fibo # F(n-1) addl 0 # AC=fibo(n-1)+tmp insp 1 # descarta tmp retn ret1: loco 1 # AC = 1 jump main C1: 1 C2: 2 main: loco 4 push call fibo # fibo(4) insp 1 halt Organização da pilha em ‘fibo’ SP End. Ret. n SP tmp End. Ret. n