Procedimentos e Gestão de Subrotinas
|
|
|
- Ana Vitória Barreiro Escobar
- 9 Há anos
- Visualizações:
Transcrição
1 5 Procedimentos e Gestão de Subrotinas Wait a minute, Doc. Are you telling me you built a time machine out of a DeLorean? Marty McFly para o Dr. Brown no filme de 1985, Back to the future O desenho de um programa pode ser simplificado subdividindo o problema a resolver em um ou mais sub-problemas, seguindo a abordagem de dividir para conquistar. Neste capítulo, iremos aprender o mecanismo de chamada de procedimentos (em Assembly por vezes designadas por subrotinas) do MIPS. Estas subrotinas permitem escrever um programa complexo de uma forma modular, permitindo assim uma melhor depuração de erros e também a reutilização de subrotinas ao longo de todo o programa. Quando um procedimento (o caller) chama outro procedimento (o callee), o controlo do programa é transferido do caller para o callee, isto é, o controlo é transferido do procedimento que chama para o procedimento chamado. As instruções que tornam possível o correcto funcionamento deste mecanismo são as instruções jal e jr, que analisaremos em detalhe. Os quatro passos necessários para executar um procedimento são: 1. Guardar o endereço de retorno. O endereço de retorno é o endereço da instrução que surge imediatamente após o ponto da chamada. 2. Chamar o procedimento. 3. Executar o procedimento. 4. Recuperar o endereço de retorno e retornar ao ponto inicial (que é o ponto da chamada). A arquitectura do MIPS fornece duas instruções que são utilizadas em conjunção para realizar a chamada e retornar: jal nome_do_procedimento Esta instrução guarda no registo $ra o endereço da instrução que surge imediatamente após o jal (endereço de retorno) e salta para o procedimento cuja etiqueta se especifica. Esta instrução implementa os passos 1. e 2. Para o retorno (passo 4), utiliza-se a instrução a qual salta para o endereço armazenado no registo $ra. Durante a execução o conteúdo de $ra substitui o conteúdo do registo PC. A instrução jr também pode ser utilizada conjuntamente com outros registos e não é necessário que seja usada apenas para a implementação do procedimento de retorno, por exemplo, lui $t0, 0x50 # t0 <- 0x jr $t0 # o fecth da próxima instrução será a partir do endereço # 0x
2 É obrigatório salvaguardar o endereço de retorno ($ra) quando se entra num procedimento que chama outros procedimentos. Se escolhermos guardar o $ra num registo, então é necessário que o registo escolhido seja um daqueles que são preservados ao longo de chamadas de procedimentos (consultar a Tabela A.10, Registers Usage Conventions, do Manual). Melhor ainda é guardar o registo $ra na pilha. Gestão da Pilha A instrução jal guarda o endereço de retorno no registo $ra. Vamos assumir agora que um procedimento pretende chamar um procedimento. Então, o programador tem de guardar o registo $ra porque senão o novo jal irá escrever por cima do seu valor. Uma vez que o número de chamadas embebidas não tem limite (procedimentos podem chamar outros procedimentos que também chamam procedimentos etc.) não podemos utilizar uma localização fixa (seja ela um registo ou uma posição de memória) para guardar o registo. Em vez disso, necessitamos de uma estrutura dinâmica, qualquer coisa que nos permita armazenar dados mas sem escrever por cima de dados previamente guardados. Como não podemos utilizar o DeLorean do Dr. Brown, e como sabemos que o último dado guardado será o primeiro que iremos querer utilizar (o último valor de $ra guardado será o primeiro a ser utilizado aquando do retorno), utilizamos uma estrutura que designamos por pilha (stack). A arquitectura do MIPS descreve uma pilha cujo topo começa por ter um valor elevado (0x7fff ffff) na memória principal e que cresce para baixo, isto é, sempre que se coloca alguma coisa na pilha operação designada por push o endereço do topo do stack decresce. O registo $sp (stack pointer) aponta sempre se o programa estiver correcto para o topo da pilha, isto é, para a primeira posição vazia na pilha. Uma vez que a pilha é apenas uma secção da memória principal, iremos acedê-la usando as mesmas intruções de load/store que usamos para aceder ao segmento de dados. Por exemplo, para guardar o valor de um registo na pilha, faz-se add $sp,$sp,-4 # primeiro actualizar o stack pointer sw $ra, 4($sp) # push do $ra para o stack Começamos por subtrair a quantidade correcta ao endereço do stack pointer, uma vez que a pilha vai aumentando para baixo (na memória principal). Neste exemplo subtrai-se 4 porque queremos guardar uma palavra (4 bytes) que está no registo $ra. Depois fazemos o armazenamento (store) usando um deslocamento positivo: 4($sp) significa o endereço contido em $sp + 4, a fim de apontarmos para a posição de memória vazia para onde o $sp apontava antes de o modificarmos. Esta operação designa-se por push. Então e como fazer para recuperar um valor previamente salvaguardado na pilha de volta para o seu registo? Esta operação é a inversa do push, e designa-se por pop: lw $ra,4($sp) # recupera-se o dado da pilha add $sp,$sp,4 # actualiza-se o $sp: encolhe-se o stack uma palavra No caso de se pretender guardar vários registos, repete-se a operação: add $sp,$sp,-8 # queremos guardar 4 palavras (8 bytes) sw $s0,8($sp) sw $s1,4($sp) 30
3 Passagem de Parâmetros Existem duas formas de passar parâmetros a um procedimento: pelos registos e pela pilha. A convenção de utilização dos registos no MIPS especifica que os 4 primeiros argumentos de um procedimento são passados por registos ($a0-$a3). Os restantes são passados pela pilha. Passar parâmetros pelos registos é eficiente porque evita acessos à memória. Se o procedimento chamar outros procedimentos, então os registos que contiverem parâmetros têm de ser salvaguardados ($a0-$a3 não são preservados ao longo das chamadas). Essa salvaguarda pode ser realizada - Nos registos que são preservados ao longo das chamadas ($s0-$s7); - Na pilha. Chamando um Procedimento O caller (procedimento que chama, ou procedimento chamante) realiza o seguinte antes de chamar outro procedimento: 1. Guarda quaisquer registos que não são preservados ao longo de chamadas (i.é, $a0-$a3 e $t0-$t9) e que se espera que sejam usados após a realização da chamada. 2. Passa os parâmetros: os 4 primeiros são passados em $a0-$a3, os restantes são passados pela pilha. 3. Salta para o procedimento usando a instrução jal. 4. Após a chamada, ajusta o $sp para apontar acima dos argumentos passados na pilha (isto é equivalente a fazer um pop, só que nada é lido da pilha). O callee (procedimento chamado) faz o seguinte: 1. Guarda o $ra se o procedimento for chamar outro procedimento. 2. Guarda quaisquer registos $s0-$s7 que o procedimento modifique. 3. Realiza o que tem que realizar. 4. No caso de retornar um valor, coloca esse valor no registo $v0. 5. Restaura todos os registos previamente guardados (pop da pilha). 6. Retorna, executando. Exemplo O seguinte programa constitui um procedimento que copia uma string x para uma string y: # Arquitectura de Computadores # Programa que copia uma string y para uma string x.data str1:.asciiz "origem " str2:.asciiz "copia ".text main: addi $sp, $sp, -4 # reserva uma posição no stack sw $ra, 0($sp) # guarda o endereço de retorno jal strcpy lw $ra, 0($sp) # recupera endereço de retorno 31
4 end: strcpy: L1: addi $sp, $sp, 4 # pop do stack pointer addi $sp, $sp, -4 sw $s0, 0($sp) # guarda $s0 no stack add $s0, $0, $0 # $s0 = i = 0 la $t5, str1 # guarda endereço de str1 em $t5 la $t6, str2 # guarda endereço de str2 em $t6 add $t1, $s0, $t5 # carrega em $t1 endereço de str1 que é o y(i) lb $t2, 0($t1) # carrega o byte y(i) em $t2 add $t3, $s0, $t6 # carrega em $t3 endereço de str2 que é o x(i) sb $t2, 0($t3) # armazena em x(i) o byte y(i) que está em $t2 addi $s0, $s0, 1 bne $t2, $0, L1 # incremento de 1 (byte seguinte) # se y(i)!= 0 então continua a copiar lw $s0, 0($sp) # senão, recupera antigo valor de $s0 addi $sp, $sp, 4 Q5.1. (3º Trab. Lab ) Escreva um programa com um procedimento em Assembly do MIPS R2000 que dada uma cadeia de caracteres na memória, conte o número de palavras dessa cadeia e imprima o resultado no écran. O argumento do procedimento (o endereço da cadeia de caracteres) deverá ser passado no registo $a0. O procedimento deverá usar o registo $s0 para contar o número de palavras, o registo $s1 como contador e o registo $s2 para armazenar o argumento. Por isso, o procedimento deve guardar estes registos na pilha, repôndo os seus valores antes de retornar. Não se esqueça também que os procedimentos em Assembly do MIPS devolvem sempre o(s) resultado(s) no(s) registo(s) $v0-$v1 (ver Tabela A.10 do Manual). O código do caracter espaço ( ) é o 32 (0x20), pelo que deverá colocá-lo num registo a fim de efectuar comparações: addi $t0, $0, 32 # coloca caracter espaço em $t0= 0x20 3º Trabalho de Laboratório 32
5 Procedimentos Recursivos Um procedimento recursivo é um procedimento que se chama a si mesmo. Contudo um procedimento recursivo tem eventualmente que terminar. Logo, um ingrediente essencial de um procedimento recursivo é a condição de paragem, a qual especifica quando deve um procedimento recursivo parar de se chamar a si mesmo. Um outro ponto a ter em conta é o facto de o procedimento chamar-se a si mesmo de cada vez com argumentos (parâmetros) diferentes, caso contrário a computação não acaba. Vamos começar por utilizar o clássico exemplo da função factorial. A sua definição indutiva é a seguinte: - Base: 0! = 1 - Indução: N! = (N 1)! N, para N 1 Esta definição traduz-se simplesmente no programa recursivo que se segue: int factorial(int num) { int fact; if (num == 0) return 1; /* condição de paragem */ fact = factorial(num-1); /* chamada recursiva */ return fact; } Em Assembly do MIPS, o factorial codifica-se neste exemplo: # Este procedimento calcula o factorial de um inteiro positivo # O argumento é recebido em $a0 # O resultado (um inteiro de 32 bits) é devolvido em $v0 # Não usa nenhum registo $s0-$s7 por isso não é preciso guardá-los factorial: subu $sp, $sp, 4 sw $ra, 4($sp) # guarda endereço de retorno no stack beqz $a0, termina # testa base da recursão subu $sp, $sp, 4 # ainda não termina sw $a0, 4($sp) # guarda o argumento sub $a0, $a0, 1 # será chamado com n-1 jal factorial # após a base da recursão ser executada, estas linhas # serão executadas lw $t0, 4($sp) # argumento que guardei no stack mul $v0, $v0, $t0 # n*(n-1) lw $ra, 8($sp) # preparar o retorno addu $sp, $sp, 8 # retirei do stack dois elementos (um endereço e # um argumento) termina: li $v0, 1 # 0! = 1 é o valor de retorno lw $ra, 4($sp) # obtém endereço de retorno addu $sp, $sp, 4 # ajusta o stack pointer # retorna Q5.2. Baseando-se no exemplo anterior, crie um novo programa com as seguintes alterações: - No main pede ao utilizador que introduza um inteiro; armazene-o em $t0; 33
6 - Verifica se o número é negativo. Se for, imprime uma mensagem de erro e volta a pedir outro número ao utilizador; - Chama o procedimento factorial (com o inteiro introduzido) e retorna o factorial desse número; - Passa o parâmetro num registo; - Imprime uma mensagem e o valor do factorial. Q5.4. Quantas chamadas recursivas são realizadas para n=5? Q5.5. Cada vez que uma chamada recursiva é feita, a pilha aumenta. Por quantos bytes por chamada? Q5.6. Uma vez que a pilha cresce cada vez que uma chamada recursiva é feita, a memória pode acabar. Assumindo que a dimensão da pilha é bytes, que valor de entrada iria gerar chamadas suficientes para rebentar com a pilha? Q5.7. Escreva um programa que calcule o número de Fibonacci. 34
AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto
Sumário. Aula Anterior. Exercício 7.1 Contagem de bits a 1 numa palavra Exercício 7.2 Deslocamento de n bits num operando de 64 bits.
Sumário Aula Anterior Exercício 7.1 Contagem de bits a 1 numa palavra Exercício 7.2 Deslocamento de n bits num operando de 64 bits Aula 12 1 Sumário Nesta Aula Esclarecimento de dúvidas para o Exame Resolução
Escreva um programa em código assembly correspondente ao seguinte programa C.
Exercício 11.1 Escreva um programa em código assembly correspondente ao seguinte programa C. cont=0; for (n=0; n
Arquitectura de Computadores ARQC MIPS. Serviços de Sistemas Exemplos. Serviços de Sistema
Arquitectura de Computadores ARQC MIPS Serviços de Sistemas Exemplos Serviços de Sistema Exemplo 1 Somar duas variáveis veis em um registrador register int a=1, b=3, c; c = a + b; (usar os códigos c de
Organização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 Operações Lógicas Embora os primeiros computadores se concentrassem em words completas, logo ficou claro que era útil atuar sobre
Guia Rápido MIPS. Tipos de Dados e Formatações
Tipos de Dados e Formatações Guia Rápido MIPS Tipos de Dados: Todas as instruções são de 32 bits Byte = 8 bits Halfword = 2 bytes Word = 4 bytes Um caractere ocupa 1 byte na memória Um inteiro ocupa 1
Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009
Prova P1 Aluno Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009 Valor das questões: 1) 3 pontos 2) 3 pontos 3) 4 pontos 1. O fragmento de
Lista de Revisão para a Primeira Avaliação
Lista de Revisão para a Primeira Avaliação 1. Explique a diferença entre as instruções add e addi. Qual formato de instrução cada uma delas utiliza? 2. Quantos bits a instrução j reserva para o endereço
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n
Assembly IA32 Procedimentos
1 Procedimentos Assembly IA32 Procedimentos Uma chamada a um procedimento implica a transferência de dados (na forma de parâmetros do procedimento e na forma de valores retornados pelo procedimento) e
Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture
Registradores na Arquitetura MIPS 29/4/2016 MIPS - Instruction Set Architecture 1 Mapa de Memória da Arq. MIPS 2 GB 2 GB 256 MB 64 KB 2 GB 64 KB 256 4 MB 4 MB 29/4/2016 MIPS - Instruction Set Architecture
Sistemas Embebidos I , Tiago Miguel Dias ISEL, ADEETC - Secção de Electrónica e Telecomunicações e de Computadores
Sistemas Embebidos I Licenciatura em Eng. de Electrónica e Telecomunicações e de Computadores Licenciatura em Engenharia Informática e de Computadores Mestrado em Engenharia de Electrónica e Telecomunicações
Estruturas de controlo condicional
4 Estruturas de controlo condicional Would you tell me, please, which way I ought to go from here? That depends a good deal on where you want to get to. said the Cat. I don't much care where said Alice.
1. uins.ce <= '1' when i=sw or i=lw else '0'; 2. uins.rw <= '0' when i=sw else '1'; 3. uins.wreg <= '0' when i=sw else '1';
Prova P2 Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans Aluno: 4/novembro/215 Para realizar a prova, refira-se à proposta de organização MIPS monociclo vista em aula. O desenho
MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS
Datapath do MIPS MIPS Implementação Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS Instruções de leitura (load lw) e de escrita (store sw) Instruções aritméticas e lógicas
SSC0114 Arquitetura de Computadores
SSC0114 Arquitetura de Computadores 3ª Aula Arquitetura MIPS: ISA, Formato das instruções e Modos de endereçamento MIPS Monociclo: Caminho de Dados e Unidade de Controle Profa. Sarita Mazzini Bruschi [email protected]
Conjunto de Instruções. Prof. Leonardo Barreto Campos 1
Conjunto de Instruções Prof. Leonardo Barreto Campos 1 Sumário Introdução; CISC; RISC; MIPS; Representação de Instruções; SPIM; Prof. Leonardo Barreto Campos 2/58 Sumário Operações Lógicas; Instruções
SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES
SEL 0415 Aula 11 Microcontrolador 8051 Parte 3 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 415 INTERRUPÇÃO Estrutura de Interrupção do 8051 n 5 Fontes [ 2 Externas
Do alto-nível ao assembly
Do alto-nível ao assembly Compiladores Cristina C. Vieira 1 Viagem Como são implementadas as estruturas computacionais em assembly? Revisão dos conceitos relacionados com a programação em assembly para
Introdução ao Assembly usando o Simulador SPIM
Arquitectura de Computadores 2004 / 2005 Introdução ao Assembly usando o Simulador SPIM Guia dos Laboratórios Departamento de Matemática e Engenharias Universidade da Madeira Planeamento dos Laboratórios:
ARQUITECTURA DE COMPUTADORES
ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA III Março 2014 Índice Instruction Set Revisões Procedimentos Stack Comunicar com pessoas ASCII Programar em MIPS estrutura, input e output Programar em MIPS
1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x
Prova P1 Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans Aluno: 14/setembro/2012 Lista de associação de números e mnemônicos para os registradores do MIPS Número (Decimal) Nome
Faculdade de Computação
Faculdade de Computação Arquitetura e Organização de Computadores 2 1 a Laboratório de Programação MIPS entrega 03/05/2018 Prof. Cláudio C. Rodrigues Problemas: P1) Execute as conversões abaixo: a) Converta
arquitetura de computadores
arquitetura de computadores Laboratório 4 Subrotinas UTFPR DAELN Engenharia de Computação prof. Juliano Funções em assembly são usualmente chamadas de subrotinas e possuem várias convenções para interoperabilidade,
Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -
Microprocessadores I ELE 1078 Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - 9.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência
MODOS DE ENDEREÇAMENTO
UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO ERINALDO SANCHES NASCIMENTO MODOS DE ENDEREÇAMENTO MARINGÁ 2014 SUMÁRIO 6 MODOS DE ENDEREÇAMENTO...2 6.1 ENDEREÇAMENTO
Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO
Linguagem de Montagem Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO 1 Introdução Independente da linguagem de programação utilizada, todo programa
Exercícios resolvidos (aula de 4 de Maio) Resolução:
Exercícios resolvidos (aula de 4 de Maio) 1. Um microprocessador gera endereços de memória de 14 bits. Desenhe um mapa de memória dos seus endereços de memória fronteira especificados em hexadecimal. Uma
Arquitetura de Computadores MIPS
Arquitetura de Computadores MIPS Arquitetura de von Neumann CPU Memory Input / Output Control bus Address bus Data bus System BUS Arquitetura de von Neumann Executa as instruções do programa Working copy
Exercícios e Problemas com o SPIM
Henrique M. D. Santos DSI/UM Índice... 1 1. Nível Introdutório... 1 1.1 Expressões simples, transferências com a memória e I/O... 1 1.2 Arrays... 2 1.3 Operações condicionais, de salto e ciclos... 2 1.4
Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans
Prova P1 Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans Aluno: 18/abril/2012 Lista de associação de números e mnemônicos para os registradores do MIPS Número (Decimal) Nome
MICROPROCESSADORES 2º TESTE - A
MICROPROCESSADORES 2º TESTE - A Ano Lectivo: 2005/2006 Data: 8 de Maio de 2006 Ano Curricular: 1º Ano 2º Semestre Duração: 2h00 INFORMAÇÕES GERAIS 1. Identifique todas as folhas do enunciado com nome e
Organização e Arquitetura de Computadores I
Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização e Arquitetura Básicas
Sistemas Processadores e Periféricos Aula 3 - Revisão
Sistemas Processadores e Periféricos Aula 3 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão
LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
SSC0611 Arquitetura de Computadores
SSC0611 Arquitetura de Computadores 2ª e 3ª Aulas Arquitetura MIPS: ISA, Formato das instruções e Modos de endereçamento Profa. Sarita Mazzini Bruschi [email protected] 1 Arquitetura MIPS MIPS: Microprocessor
[1] $2,$0,$3 105 [2] 0x004000e8
Prova P1 Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans Aluno: 14/setembro/2017 Lista de associação de números e mnemônicos para os registradores do MIPS Número (Decimal) Nome
LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Microprocessadores 1º Ano - LECOM
Microprocessadores 1º Ano - LECOM Universidade do Minho Dept. De Electrónica Industrial 1 Interrupções: Motivação Pretende-se desenvolver um sistema que sintetize uma onda quadrada com um frequência de
Tópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET
Tópicos: 1 - Modos de endereçamento do 8051 2 - Pilha e instruções de Pilha 3 - Instruções que usam pilha: - instrução CALL - instrução RET 4 - Interrupção 1 - Modos de Endereçamento do 8051 Os modos de
Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada
3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.
3. INSTRUÇÕES Instrução é uma palavra da linguagem de máquina Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony. Operações O MIPS trabalha com 3 operandos. add a,b,c # a b + c
Sistemas de Computação. Instruções de Linguagem de Máquina
Instruções de Linguagem de Máquina Linguagem de montagem do processador MIPS Operações aritméticas Instrução Exemplo Significado soma add a, b, c a = b + c subtração sub a, b, c a = b - c Compilação de
Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples
Infraestrutura de Hardware Implementação Multiciclo de um Processador Simples Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e
Linguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior [email protected] Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Interrupção. Prof. Adilson Gonzaga
Interrupção Prof. Adilson Gonzaga Estrutura de Programação Assembly Programa Principal Chamada de Sub-rotina1 Programa Principal Chamada de Sub-rotina2 Sub-rotina1 Subrotina2 Programa Principal Chamada
Especificação do Projeto de Processador RISC
UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO Especificação do Projeto de Processador RISC mycpu Neste documento é apresentada a especificação do projeto da disciplina Organização e Arquitetura de Computadores
Recursividade. Prof. Jesus José de Oliveira Neto
Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos
Arquitetura de Computadores. Linguagem de Máquina
Arquitetura de Computadores Linguagem de Máquina Ivan Saraiva Silva Formato de Instrução MAC O MIC possui dois formatos de instrução: 4 bits 12 bits Formato 1 CODOP ENDEREÇO 8 bits 8 bits Formato 2 CODOP
Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans
Prova P1 Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans Aluno: 19/abril/2013 Lista de associação de números e mnemônicos para os registradores do MIPS Número (Decimal) Nome
4. Modelo de Programação do DLX Introdução
4. Modelo de Programação do DLX Quero que o matemático Beremiz Samir nos conte uma lenda, ou uma simples fábula, na qual apareça uma divisão de 3 por 3 indicada, mas não efetuada, e outra de 3 por 2, indicada
Atividade de laboratório listas encadeadas simples
Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém
Implementação de subprogramas
Implementação de subprogramas Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Microcontroladores e Interfaces
Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial Carlos A. Silva 2º Semestre de 2005/2006 http://www.dei.uminho.pt/lic/mint Aula A3 15 Mar 05 - M Datapath e a sua Unidade de Controlo
08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?
Pilha SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Pilha O que é? Para que serve? 2 1 Rotina A 1 print A 2 call C 3 call B 4 call D Rotina B 1 call C 2 print B 3 call D 4 call C
Faculdade de Computação
Faculdade de Computação Arquitetura e Organização de Computadores 1 Prática 2 entrega 10/05/2019 Prof. Cláudio C. Rodrigues Programando a Arquitetura MIPS P1) Traduza os códigos de máquina a seguir para
Implementando subprogramas
Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Um Exemplo de Nível ISA: o IJVM. Pilhas. Pilhas. O Modelo de Memória da IJVM. Pilhas de Operandos. Nível ISA
Ciência da Computação Arq. e Org. de Computadores Nível ISA Prof. Sergio Ribeiro Um Exemplo de Nível ISA: o IJVM Objetivo: Introduzir um nível ISA (Instruction Set Architecture), a ser interpretado pelo
CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados
CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)
Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções
Capítulo 2 Hennessy Patterson 1 Instruções Linguagem da máquina Vamos trabalhar com a arquitetura do conjunto de instruções MIPS (Micrrocessor without interlocked pipeline stages Micrrocessador sem estágios
Faculdade de Computação
Problemas: Faculdade de Computação Arquitetura e Organização de Computadores 2 1 a Laboratório de Programação MIPS entrega 18/04/2016 Prof. Cláudio C. Rodrigues P1) Considere que você é um projetista da
7. A pilha e subrotinas
Cap7.1 7. A pilha e subrotinas 7.1 Organização da Pilha (stack) Stack: estrutura de dados de uma dimensão organizada em algum trecho (segmento) da Memória; o primeiro item adicionado é o último a ser removido
Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
Prof. André Backes Função Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. print(): função que escreve na tela input (): função que lê o teclado 1 Função Facilitam
66 [2] 0x x c
Prova P1 Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans Aluno: 16/setembro/2015 Lista de associação de números e mnemônicos para os registradores do MIPS Número (Decimal) Nome
Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios
Microprocessadores I ELE 1078 Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Grupos de Instruções do 8085 As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da
Aula 19: UCP: Construindo um Caminho de Dados (Parte III)
Aula 19: UCP: Construindo um Caminho de Dados (Parte III) Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Caminho de Dados (III) FAC 1 /
Variáveis e Memória. Revisão. Conceitos. Operações sobre a memória
Variáveis e Memória Revisão Estudamos, na Introdução, que os programas de computador implementam algoritmos, os quais manipulam um conjunto de dados para produzir um resultado. O algoritmo é um conjunto
a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 - Gabarito 1. Um programa P foi compilado com
SCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha
Sistemas Processadores e Periféricos Aula 2 - Revisão
Sistemas Processadores e Periféricos Aula 2 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão
Introdução ao Assembly usando o Simulador SPIM
Arquitectura de Computadores 2004 / 2005 Introdução ao Assembly usando o Simulador SPIM Guia dos Laboratórios Departamento de Matemática e Engenharias Universidade da Madeira Planeamento dos Laboratórios:
AULA DE REVISÃO 4 ILP
AULA DE REVISÃO 4 ILP Exercício 1: Qual seria o desempenho de referência (em ciclos, por iteração do loop) da sequência de código, mostrado abaixo, se nenhuma nova execução de instrução pudesse ser iniciada
Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples
Infraestrutura de Hardware Implementação Monociclo de um Processador Simples Componentes de um Computador Unid. Controle Controle Memória Registradores PC MAR IR AC Programa + Dados Instrução Endereço
Computação e Programação Exame Época de recurso
Nome : Número : Computação e Programação 2013-2014 Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas DECivil Exame Época de recurso 29 de Janeiro de 2014 v
