arquitetura de computadores
|
|
|
- Walter Guterres Bardini
- 8 Há anos
- Visualizações:
Transcrição
1 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, já que estamos mexendo diretamente com os detalhes do processador neste nível. Salto e Retorno Quando uma função é encerrada, ele deve voltar ao ponto em que foi chamada. Mas este ponto pode variar, já que a função pode ser chamada diversas vezes, de diversos lugares do programa. Como saber qual o endereço de retorno? A estratégia do MIPS é armazenar este endereço no registrador $ra (return address). Veja: main: jal nada # chama a subrotina; volta é guardado em $ra volta: li $s0,0 jal nada # chama nada ; vai armazenar fim em $ra fim: break # saída deselegante; use syscall 10 ao invés disso nada: li $t0,3 jr $ra # pula para o endereço dado por $ra (volta ou fim) A instrução jal (jump-and-link) é um j modificado que guarda automaticamente o valor de PC+4 no $ra (endereço da instrução seguinte ao jal: é o ponto de retorno da chamada). As subrotinas devem portanto terminar com jr $ra para saltar explicitamente para o ponto de retorno da chamada. Parâmetros Para usarmos parâmetros e retornarmos resultados das funções, usamos os registradores padrão $a0~$a3 para os argumentos, nesta ordem, e $v0 para o resultado (com $v1 se o resultado for de 64 bits). Veja a subrotina prod, que tem como resultado o produto de seus dois parâmetros. main: li $a0,3 li $a1,2 # carrega parâmetros (3,2) e chama função jal prod move $s0,$v0 # copia o resultado de $v0 para $s0 break prod: mul $v0,$a0,$a1 # apenas multiplica os parâmetros jr $ra # retorna; resultado (6) em $v0 Note que isso é apenas uma convenção 1, e apesar de ser uma péssima ideia desobedecê-la, isso é possível. Há um compilador C para o MIPS que gera código sem diferenciar os registradores: usa os disponíveis conforme precisa (embora não possa usar o $0 nem o $31=$ra, além dos $k, usados pelo sistema operacional). Construa um programa que obtém um valor válido de temperatura pelo teclado, o converte de Celsius para Fahrenheit e o imprime, usando no mínimo duas funções auxiliares. Use números inteiros. 1 Estas convenções fazem parte de uma ABI Application Binary Interface. Uma ABI define várias coisas, entre elas o comportamento padrão de funções, para que os linkers (linkeditores) consigam ligar módulos de diferentes linguagens num mesmo programa-alvo. Poderíamos, por exemplo, usar um módulo em C, outro em assembly e um terceiro em Java, compilando tudo para um único executável.
2 Pilha A pilha é uma área de memória destinada a guardar dados temporários. É uma estrutura LIFO (Last In First Out) que costuma ser usada por processadores para armazenar variáveis locais (variáveis com storage class automática) e endereços de retorno de funções. O endereço do topo da pilha na memória é dado pelo registrador $sp (Stack Pointer). As operações são chamadas push (guardar dado) e pop (recuperar dado), e podem ser vistas na próxima seção. As funções convencionadas no MIPS assumem que a pilha aumenta em direção ao endereço 0x (ou seja, $sp vai diminuindo) e $sp aponta para o último elemento que foi empilhado. Em outras convenções, a pilha pode crescer em direção ao fim da memória e $sp poder apontar para o próximo espaço a ser utilizado, por exemplo. Funções que Chamam Outras Funções Se uma função chama outra, teremos dois endereços de retorno a armazenar, um para cada chamada, mas apenas um $ra. A saída é preservar temporariamente o primeiro endereço de retorno em algum lugar, convencionalmente na pilha. Veja uma função func1 que apenas chama corretamente outra função func2: func1: addi $sp,$sp,-4 # reserva espaço na pilha para um dado sw $ra,0($sp) # guarda o $ra original no topo da pilha jal func2 # isso vai destruir o valor original de $ra! lw $ra,0($sp) # recupera valor original guardado na pilha addi $sp,$sp,4 # libera o espaço reservado para o $ra jr $ra # retorna para o endereço correto Isso resolve um problema; mas e os outros registradores? Suponha agora que func1 vá precisar de 3 registradores e func2 de outros 4. Como garantir que func2 não vai destruir nada importante? A solução é uma convenção simples: uma função pode destruir os valores de $t's (temporários) e $a's, mas não pode destruir nenhum outro, em especial os $s's (salvos). A regra é: a função chamadora empilha/recupera quaisquer $t's, $a's ou $v's que precisem ser mantidos após a chamada; a função chamada empilha/recupera $ra e os $s's que destruir. Construa um programa que calcula y=3x 5 +2x 3-6x para um valor de x entrado pelo teclado. A main deverá pegar o valor, chamar uma função que calcula y e imprimir o resultado. A função que calcula y deverá obrigatoriamente chamar uma função pow, que eleva um número $a0 a outro $a1. Register Spilling e Registradores na Pilha Temos portanto poucos registradores disponíveis, mas eles são suficientes para o caso comum (pense em quantas variáveis locais costumam ser usadas numa função). Nos casos onde faltam registradores, precisamos salvar valores temporariamente na memória, especificamente na pilha. A isso se chama register spilling. No caso especial de uma função precisar de mais de 4 parâmetros, os demais são empilhados em ordem logo antes da chamada à função, que deverá acessá-los lá dentro da pilha. A convenção da ordem pode ser C/Windows (começa com parâmetros mais à esquerda, progredindo para a direita) ou Pascal (direita para esquerda). Os argumentos devem ser removidos da pilha pela função chamadora (C) ou pela função chamada (Windows/Pascal).
3 Resumo das Convenções Seguem novamente em formato de lista, para clareza. Uma função pode usar apenas os registradores $t0~$t9, além de $a0~$a3 e $v0 Se a função precisar utilizar os outros registradores, em especial os $s0~$s9, eles deverão ser salvos na pilha no começo da função e ter seus valores recuperados da pilha ao final da função A função só pode usar valores passados a ela como parâmetros pelos registradores $a0 a $a3, nesta ordem. Ou seja, uma função volume(altura, largura, profundidade) não pode passar a altura por $a3, largura por $a1 e deixar a profundidade em $t0: deverá usar $a0, $a1 e $a2. Se houver mais de quatro parâmetros, eles são passados através da pilha. Se a função produz um resultado a retornar, deverá obrigatoriamente usar $v0 para devolvê-lo à chamadora. Se a função chama outra função, deverá guardar o valor de $ra na pilha no seu início e recuperá-lo da pilha ao final. Se não chama outra função (função folha), isso é desnecessário. Se a função chama outra função, deverá, antes da chamada, guardar na pilha o valor de todos os registradores que utilizar e recuperá-los logo depois, pois teoricamente a função chamada pode destruir os valores. Isso inclui os $t's, $a's e $v's! Por exemplo: se a função matriz usa $t0, $t2 e $a0 e chama a função varredura, os valores de $ra, $t0, $t2 e $a0 deverão ser empilhado antes do jal varredura e desempilhados depois. Utilizando uma função hipotética já pronta chamada cemseno que calcula o valor de 100*seno($a0), que infelizmente destrói todos os $t e $a no processo, faça uma subrotina que devolve como resultado $a0+cemseno(3*$a1)-cemseno(3*$a0)+$a2*$a1. Construa e teste uma função que retorna como resultado a soma de oito valores passados a ela como parâmetros. Utilize a convenção do C. Números em Ponto Flutuante 2 Os números em ponto flutuante são representados em binário e quebrados em sinal, mantissa e expoente. Por exemplo, em binário é: 3, , pois = 2+1+0,125+0, = 3, (perceba a aproximação provocada pelo erro de precisão). Vamos representar em float usando, como exemplo, 16 bits: = 1, *2 1 (notação científica binária, uma ideia similar à do formato decimal, parecido com representar a velocidade da luz com 2,9979*10 8 m/s). O primeiro 1 (o MSB) sempre fica implícito, pois ele sempre existe (certo?) 3, então os dados são Como o expoente é 1, temos: sinal expoente mantissa 0 (positivo) Outro exemplo: os dígitos binários (sinal 1, expoente 11110, mantissa em itálico ) significam, neste float de 16 bits, -1, *2-2 = -0, = 0,25+0, , = 0, Para conversão de decimal para ponto flutuante, o método mais simples é o seguinte: primeiro convertemos a parte inteira, depois vamos multiplicando a parte fracionária por dois, tomando o primeiro dígito. Por exemplo, para = , temos 3 2 =11, inicialmente. Então: 2 O livro-texto possui explicações detalhadas deste tópico. 3 Neste padrão, o expoente zero com mantissa zero é usado para representar o número 0.0. É um caso especial.
4 *2= retiramos o *2= retiramos o *2= retiramos o *2= retiramos o *2= retiramos o *2= retiramos o *2= retiramos o 0 e assim por diante. Montando em ordem, finalmente temos = Alternativamente, podemos ir calculando na mão o peso de cada bit e testar a adição (ex.: o primeiro bit vale 2-1 =0.5, então =3.5 que é maior que ; portanto este bit deve ser zerado, e assim por diante). A respeito deste formato especificado acima: 1. Converta 123,456 e -0, para o formato e para representação decimal. 2. Quais os valores máximo e mínimo representáveis? Quantos dígitos decimais temos de precisão? 3. Descreva um circuito somador e um subtrator para números em ponto flutuante. 4. Descreva um circuito multiplicador em ponto flutuante. Estime o número de clocks gastos. 5. Se tivermos x= e y=0,000987, na representação de 12 bits apresentada, qual será o resultado do cálculo não otimizado x+y-x? (O ponto é: operações com floats não são comutativas!) O formato padrão de facto é o IEEE 754 que especifica o binary16 ou half precision, muito similar ao descrito acima. Há poucas diferenças: valores especiais (infinito e NAN Not a Number), valores não normalizados e, em especial, a representação do expoente em excesso (bias de 15 no float), para facilitar comparações. Exercícios 1. Faça e teste uma função recursiva que calcula o fatorial de um número, obedecendo às convenções descritas. Sugiro me perguntar se está correta. 2. Há um comando chamado nop (no operation) no assembly MIPS, que não faz nada. Ele está presente na maioria dos microprocessadores. Para que ele serve? 3. Note que alguns processadores sempre salvam o endereço de retorno na pilha, mesmo que a subrotina não chame nenhuma outra (seja uma folha ). Argumente a favor disso. 4. O x86 sempre teve poucos registradores de uso geral. Em que circunstâncias isso é desejável, ao invés de termos muitos deles? Por que não podemos ter centenas deles? 5. A família de microcontroladores do 8051 não possui registradores explícitos, usando ao invés deles referências à memória RAM interna do processador (128 ou 256 bytes de base). Isso é obviamente razoável (já que ainda se vendem 8051's). Por quê? Resposta Detalhada do Exercício 4 do Laboratório #3 No 8051, é o programador que decide se o número de 8 bits é sinalizado ou não. Dada a conta: com resultado num registrador de 8 bits, quais são os valores decimais envolvidos? Houve estouro da capacidade de 8 bits ou não? Chamemos o valor de x e o valor de y. Temos quatro possibilidades interpretativas, usando notação da linguagem C: tipo x y signed de 8 bits unsigned de 8 bits O resultado final da soma será , independentemente de haver sinal ou não, pois a ULA faz as somas sem saber se o número é binário puro ou complemento de 2, já que a operação
5 matemática é a mesma em ambos os casos. Este valor tanto pode ser 149, caso o resultado seja interpretado como unsigned, como pode ser -107, se for signed. Perceba que o resultado está correto em todas as possibilidades, exceto quando tanto x quanto y são unsigned: = = = =405, e 405= (o 256 é o carry) Isso ocorre porque as contas de 8 bits são feitas em módulo 256. Observe que não há overflow e há carry nesta conta Ademais, o overflow só vale para o caso 1, sinalizado, e o carry só deve ser usado no caso 4, não sinalizado. Os casos 2 e 3 são perigosos para o programador, misturando representações sinalizada e não sinalizada, mas dão o resultado certo. Portanto só há estouro da capacidade de 8 bits se estivermos usando números não sinalizados; caso contrário, não há estouro.
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
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
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 Conceitos BásicosB (Parte II) Prof
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
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
Universidade Federal de Uberlândia Faculdade de Computação. Representação e aritmética binária
Universidade Federal de Uberlândia Faculdade de Computação Representação e aritmética binária Prof. Renato Pimentel 1 Tipos de informação Representação por meio de sequências binárias: 8 bits (byte) Também
Procedimentos e Gestão de Subrotinas
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
Disciplina: Introdução à Engenharia da Computação
Colegiado de Engenharia de Computação Disciplina: Introdução à Engenharia da Computação Aula 07 (semestre 2011.2) Prof. Rosalvo Ferreira de Oliveira Neto, M.Sc. [email protected] 2 Representação
Arquitetura e Organização de Computadores
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Arquitetura e Organização de Computadores Aritmética Computacional Prof. Sílvio Fernandes
Capítulo 2. Representação de números em vírgula flutuante
Capítulo 2 Representação de números em vírgula flutuante Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture Números inteiros Os computadores foram
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
ARQUITECTURA DE COMPUTADORES
ARQUITECTURA DE COMPUTADORES CAPÍTULO III AULA I, II e III Abril 2014 Índice Aritmética para computadores Intro Adição e subtração Multiplicação Divisão Virgula Flutuante Virgula Flutuante - aritmética
a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.
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 1. Um programa P foi compilado com um compilador
Organização de Computadores I
Organização de Computadores I Aula 6 Material: Diego Passos http://www.ic.uff.br/~debora/orgcomp/pdf/parte6.html Organização de Computadores I Aula 6 1/17 Tópicos Representação de números não-inteiros.
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
William Stallings Arquitetura e Organização de Computadores 8 a Edição
William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 9 Aritmética do computador slide 1 Unidade aritmética e lógica Faz os cálculos. Tudo o mais no computador existe para atender
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
ARQUITETURA DE COMPUTADORES
Representação de Dados Professor: Airton Ribeiro de Sousa E-mail: [email protected] 1 Ao longo dos anos, muitos padrões e convenções foram estabelecidas para determinar certos aspectos da
PARTE I I: ARITMÉTICA COMPUTACIONAL ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR
PARTE I I: ARITMÉTICA COMPUTACIONAL ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Como representar números em memória? Como representar números negativos e de ponto flutuante?
Arquitetura de Computadores
Arquitetura de Computadores Eduardo Albuquerque Adaptado do material do Prof. Fábio M. Costa Instituto de Informática UFG 1S/2004 Representação de Dados e Aritmética Computacional Roteiro Números inteiros
Sistemas numéricos e a Representação Interna dos Dado no Computador
Sistemas numéricos e a Representação Interna dos Dado no Computador Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected] URL: http://www.inf.ufsc.br~silveira Material elaborado pelo prof
Aritmética dos Computadores
William Stallings Arquitetura e Organização de Computadores Capítulo 4 Aritmética dos Computadores Unidade Lógica e Aritmética Faz os cálculos lógicos e aritméticos. Tudo, num sistema computador, está
Ponto Fixo e Ponto Flutuante
Ponto Fixo e Ponto Flutuante Arquitetura de Computadores Introdução (1/2) É trivial para um computador atual tratar e operar com números inteiros. Entretanto, em muitas aplicações do dia a dia é necessário
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
Aula 11. A Informação e sua Representação Ponto-Flutuante. Prof. Dr. Dilermando Piva Jr.
11 Aula 11 A Informação e sua Representação Ponto-Flutuante Prof. Dr. Dilermando Piva Jr. Site Disciplina: http://fundti.blogspot.com.br/ Em alguns tipos de cálculo, a faixa de variação dos números envolvidos
Registradores. Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores.
Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores. Esses espaços são parecidos com variáveis de uma linguagem de programação de alto nível, onde se guarda
Estouro e Representação em Ponto Flutuante
Estouro e Representação em Ponto Flutuante Cristina Boeres Insituto de Computação (UFF) Fundamentos de Arquiteturas de Computadores Material baseado nos slides de Fernanda Passos Cristina Boeres (IC/UFF)
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
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
Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
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
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
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2011-2 Visão Geral 1 2 3 4 O Computador A Memória Principal A Linguagem do Computador Os Dados e
Arquitetura e Organização de Computadores
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Arquitetura e Organização de Computadores Conjunto de Instruções Prof. Sílvio Fernandes
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
Aula 3 - Representação de Dados
Aula 3 - Representação de Dados Marcos A. Guerine Universidade Federal Fluminense [email protected] Na aula passada... História dos sistemas de numeração Bases de numeração Conversão entre bases Conversão
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
Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
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 Data de entrega 16/09/2016 por e-mail ([email protected])
Arquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Conjunto de Instruções Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha [email protected] Material do prof. Sílvio Fernandes - UFERSA
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
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
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
Home Programa Exercícios Provas Professor Links. 2.1 Representação de um número na base dois. O número binário 101,101 significa, na base dois:
Curso de Cálculo Numérico Professor Raymundo de Oliveira Home Programa Exercícios Provas Professor Links Capítulo 2 - Representação binária de números inteiros e reais 2.1 Representação de um número na
INTRODUÇÃO À LINGUAGEM C
INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2017) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima
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
Conjunto de Instruções e Modelos de Arquiteturas
Departamento de Engenharia Elétrica e de Computação EESC-USP SEL-0415 Introdução à Organização de Computadores Conjunto de Instruções e Modelos de Arquiteturas Aula 7 Prof. Marcelo Andrade da Costa Vieira
TP062-Métodos Numéricos para Engenharia de Produção Erros-Ponto Flutuante
TP062-Métodos Numéricos para Engenharia de Produção Erros-Ponto Flutuante Prof. Volmir Wilhelm Curitiba, 2015 Representação Numérica No sistema decimal X (10) = d 3 d 2 d 1 d 0 (número inteiro de 4 dígitos)
Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1
Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores Aula - Tópico 1 1 Problema 1 Considere o seguinte problema: Determinar o valor de y = seno(1,5). 2 Definições Para
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador
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
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP) 1 LINGUAGENS Conhecida pelo PROCESSADOR Conhecida pelo Usuário COMPILADOR LINGUAGEM DE ALTO NÍVEL LINGUAGEM ASSEMBLY 2 INSTRUÇÕES EM ASSEMBLY Para programar
Números Binários Operações Aritméticas. Prof. Patrícia G. P. Magalhães
Números Binários Operações Aritméticas Prof. Patrícia G. P. Magalhães Soma de números Binários Se faz semelhante as operações com números decimais, mas lembre-se que estamos falando de binários, assim:
Métodos Numéricos Erros Ponto Flutuante. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina
Métodos Numéricos Erros Ponto Flutuante Professor Volmir Eugênio Wilhelm Professora Mariana Kleina Representação Numérica O conjunto dos números representáveis em qualquer máquina é finito, e portanto
Números binários e erros
Números binários e erros Alan Costa de Souza 14 de Agosto de 2017 Alan Costa de Souza Números binários e erros 14 de Agosto de 2017 1 / 1 Introdução Calcular a área de uma circunferência de 100 m de raio.
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2013-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos
2. E presse cada um dos seguintes números inteiros decimais na representação sinal e magnitude e complemento a 2, utilizando 8 bits Resposta:
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Fundamentos de Arquiteturas de Computadores Turma :A1 Lista 1 Profa.: Simone Martins 1. Efetue as seguintes
Disciplina: Arquitetura de Computadores
Disciplina: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof a. Carla Katarina de Monteiro Marques UERN Introdução Responsável por: Processamento e execução de programas armazenados na
MICROPROCESSADORES E MICROCONTROLADORES. PROVA 1 - Solução da Versão 1
MICROPROCESSDORES E MICROCONTROLDORES PROV 1 - Solução da Versão 1 (o final são apresentadas as soluções da questão 4 das versões 2 e 3) 1. Na comparação entre as arquiteturas CISC e RISC, faça comentários
ARQUITETURA DE COMPUTADORES
Representação de Dados Professor: Airton Ribeiro de Sousa E-mail: [email protected] 1 REPRESENTAÇÃO DE DADOS: SÍMBOLO: Marca visual ou gráfica que representa um objeto que desejamos identificar
Dessa forma pode-se transformar qualquer número em qualquer base para a base 10.
Sistemas de numeração e representação dos números Sistemas de Numeração e Somadores Binários I Base Numérica Um número em uma base qualquer pode ser representado da forma: N = An-1.B n-1 + An-2.B n-2 +...+
Aula 9: Estouro e Representação em Ponto Flutuante
Aula 9: Estouro e Representação em Ponto Flutuante Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Estouro e Ponto Flutuante FAC 1 / 43 Revisão
Prof. Leonardo Augusto Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 10 Circuitos Aritmeticos Prof. Leonardo Augusto Casillo Somador Binário Funções aritméticas como adição, subtração, podem ser
3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
REPRESENTAÇÃO DE NÚMEROS EM BINÁRIO E HEXADECIMAL
ESCOLA POLITÉCNICA UNIVERSIDADE DE SÃO PAULO Departamento de Engenharia de Sistemas Eletrônicos PSI - EPUSP REPRESENTAÇÃO DE NÚMEROS EM BINÁRIO E HEXADECIMAL 1. Hexadecimal [A1] Hexadecimal é o sistema
Introdução à Linguagem C Variáveis e Expressões
INF1005: Programação 1 Introdução à Linguagem C Variáveis e Expressões 08/03/10 (c) Paula Rodrigues 1 Tópicos Principais Programando em C Funções Variáveis Define Operadores e Expressões Entrada e Saída
Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;
1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e
Números Binários. Apêndice A V1.0
Números Binários Apêndice A V1.0 Roteiro Histórico Números de Precisão Finita Números Raiz ou Base Conversão de Base Números Binários Negativos Questões Histórico As maquinas do século XIX eram decimais
Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Introdução à Programação Operadores, Expressões Aritméticas e Entrada/Saída de Dados Programa em C #include int main main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius
Introdução à Computação
Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Introdução à Computação A Informação
INFORMÁTICA PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES. Prof. Dr. Daniel Caetano
INFORMÁTICA PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2018-2 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dispositivos de
ELETRÔNICA DIGITAL I
ELETRÔNICA DIGITAL I Parte 2 Aritmética Digital Professor Dr. Michael Klug 1 Sistema Decimal: Sistema Binário: Adição Binária carry 1 472 246 718 A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 S=AB C=carry 2
CONJUNTO DE INSTRUÇÕES
CONJUNTO DE INSTRUÇÕES 1 CARACTERÍSTICAS DE INSTRUÇÕES DE MÁQUINA Quando um programador usa uma linguagem de alto-nível, como C, muito pouco da arquitetura da máquina é visível. O usuário que deseja programar
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
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
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
