A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

-Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Ponto Flutuante - MIPS -

Apresentações semelhantes


Apresentação em tema: "-Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Ponto Flutuante - MIPS -"— Transcrição da apresentação:

1 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Ponto Flutuante - MIPS -

2 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Padronizar É simples trocar dados que incluem números em ponto flutuante; Simplifica os algoritmos de aritmética de ponto flutuante saber que os números sempre estarão nesta forma; Aumenta a precisão de números que podem ser armazenados em uma palavra, já que os 0s desnecessários da frente são substituídos por números reais à direita do ponto decimal (,).

3 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Ponto Flutuante : Padronização IEEE 754 floatting point standard (-1) s x F x 2 e Representação de float (precisão simples) Representação de double (precisão dupla)

4 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Padronização Representação de números negativos usando notação em excesso Notação excesso: N é o número de bits do valor em questão. Ex. 1111, N = 4 Para realizar uma conversão na representação excesso, fazer: 2^ N-1 + número. Ex: convertendo 5, 2^3 + 5 = 1101 (1101 = +5). Convertendo -3, 2^ = 1010 (1010 = -3). Polarização (ou bias) Bias é um caso especial da representação excesso, onde o número mágico é escolhido pelo usuário (ex. IEEE-754 float utiliza bias=127).

5 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Exercício 1) Mostre a representação em P.F. do número -0,75 (10) 2) Mostre a representação decimal deste número:

6 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Resposta exercício 1 Convertendo para Binário o número; devemos formatar o número; remover o primeiro 1; Aqui temos o expoente (1), e a parte significativa 0,1; Até aqui sabemos que: o bit de sinal é 1 e que a parte significativa é:

7 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Resposta exercício 1 cont. Vamos calcular o expoente; Lembramos que Ex=Número-polarização; -1=Número-127; Número = 126; Número = ; Resposta:

8 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Resposta Exercício 2 Como o bit de sinal é 1, sabemos que o número é negativo; Vamos pegar a parte significativa do número: 0,01; Vamos somar um (1) para respeitarmos a formatação: 1+0,25 = 1,25; Aqui nós temos a parte significativa do número: 1,25.

9 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Resposta do exercício 2 cont. Vamos ver o expoente, lembrando que Ex=Número-polarização; Ex= ; Ex= ; Ex=2; Agora vamos juntar os dados: -1,25x2 2 = -1,25x4 = -5; Resposta: -5

10 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Coisas que devemos saber! Para programar com números com precisão de ponto flutuante, devemos usar o co-processador de ponto flutuante do MIPS; O co-processador possui seus próprios registradores (32), de 32 bits; Existem instruções específicas para números de precisão simples (32 bits) e para números de precisão dupla (64 bits). Quando trabalhamos com números de precisão dupla, ocupamos dois registradores; Para precisão dupla devemos sempre utilizar registradores de índice ($fn) par.

11 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa Exemplo Float data msg1:.asciiz "Exemplo de uso de float no spim.\nEntre com um valor: ".text.globl main main: li $2, 4 # print string (syscall code 4) la $4, msg1 syscall

12 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa exemplo Float cont. li $2, 6 # read float (syscall code 6, returns #value read in $f0) syscall mov.s $f2, $f0 # $f2 = $f0 add.s $f2, $f2, $f0

13 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa exemplo Float cont. li $2, 2 # print float (syscall code 2) mov.s $f12, $f2 # $f12 has value to be #printed syscall li $2, 10 # exit (syscall code 10) syscall

14 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa Exemplo Double.data msg1:.asciiz "\n\nf = ( g + h ) - ( i + j )\n" msg2:.asciiz "\nEntre com o valor de g: \n" msg3:.asciiz "\nEntre com o valor de h: \n" msg4:.asciiz "\nEntre com o valor de i: \n" msg5:.asciiz "\nEntre com o valor de j: \n" msg6:.asciiz "\nO valor de f é: ".text.globl main

15 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa Exemplo cont. main: li$2, 4#service 4: print_str la$4, msg1 syscall la$4, msg2 syscall li$2, 7#service 7: read_double syscall#$2 receives input mov.d$f4, $f0#$f4 receives value of variable g

16 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa Exemplo cont. li$2, 4 la$4, msg3 syscall li$2, 7 syscall mov.d$f6, $f0#$f6 receives value of variable h li$2, 4 la$4, msg4 syscall

17 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa Exemplo cont. li$2, 7 syscall mov.d$f8, $f0#$f8 receives value of variable i li$2, 4 la$4, msg5 syscall li$2, 7 syscall mov.d$f10, $f0#$f10 receives value of variable j

18 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Programa Exemplo add.d$f20, $f4, $f6 add.d$f22, $f8, $f10 sub.d$f2, $f20, $f22 li$2, 4 la$4, msg6 syscall li$2, 3#service 3: print_double mov.d$f12, $f2 syscall li$2, 10#service 10: exit syscall


Carregar ppt "-Breda, Bortoluzzi, Luz – Arquitetura de Computadores I Ponto Flutuante - MIPS -"

Apresentações semelhantes


Anúncios Google