34 dígitos 28 dígitos 62 dígitos significativos! (base 10!)

Tamanho: px
Começar a partir da página:

Download "34 dígitos 28 dígitos 62 dígitos significativos! (base 10!)"

Transcrição

1 Programação ao nível da máquina Representação de números em vírgula flutuante Programação da unidade de vírgula flutuante no IA-32 A arquitectura Intel IA-32 na sua totalidade

2 Representação de números reais Revisão Os inteiros têm uma gama limitada de valores: Não podem representar números fraccionários Números grandes necessitam de muitos bits Pretende-se uma grande gama de valores reais, desde muito grandes a muito pequenos. Exemplo: Massa do Sol: gr. Massa do electrão: gr. Ambos representáveis em vírgula fixa, se: 0, , 0 intervalo de valores dígitos 28 dígitos 62 dígitos significativos! (base 10!) Conclusão: tal é um desperdício (para quê tanta precisão para a massa do Sol?) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 319

3 Representação de números reais Revisão Representações possíveis: virgula fixa exemplo (8 dígitos c/3 para parte fraccionária): 32767,004 virgula flutuante inclui um factor de escala: 3, x 10 4 Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 320

4 Notação Científica Separa-se: A gama de valores a representar (a escala) e O número de dígitos significativos (a precisão) A notação científica permite isso: na base 10: m 10 e gama de valores o número de dígitos do expoente e precisão o número de dígitos da mantissa m Exemplo: massa do Sol: gr. massa do electrão: gr. Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 321

5 Representação num computador Os computadores modernos permitem representar números reais no formato de vírgula flutuante em base 2 será: m 2 e há que codificar m e e Possuem hardware especializado para operar com este tipo de dados: FPU - Floating Point Unit Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 322

6 Normalização Não há uma representação única para um número Suponhamos uma representação em 14 bits (1 para o sinal, 5 para o expoente e 8 para a mantissa) O número 17,5 pode ser representado por: = 0,100011* = 0, * = 0, *2 7 são todas equivalentes Uma convenção é de que o bit a 1 mais significativo da mantissa é o das unidades 17,5 = 1,00011*2 4 Como este bit é sempre 1 até se escusa de representar e ganha-se um bit na mantissa Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 323

7 Deslocamento do expoente Não há expoentes negativos? Como representar 0,25 = 1* 2-2? Podíamos usar uma representação em complemento para 2; mas também se pode usar um expoente deslocado (biased) A ideia é que a representação seja sempre positiva. Portanto, soma-se sempre uma constante positiva ao expoente, que será próxima de metade do valor máximo representável. Na representação em 32 bits (8 bits para expoente), usamos 127 (expoente ficará em excesso 127). Um número menor que 127 corresponde a um expoente negativo. Valores do expoente todo a 0 ou todo a 1 são reservados para casos especiais (0 ou infinito) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 324

8 Deslocamento do expoente 17,5 = 1, *2 4 com expoente não deslocado (com bit da mantissa escondido): sinal expoente mantissa (23 bits) 1, *2 4 com expoente deslocado, representa-se o expoente = = 131: sinal expoente mantissa (23 bits) Para representar 0,25 = 1 * 2-2 representa-se expoente = = sinal expoente mantissa (23 bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 325

9 A norma IEEE-754 Floating Point Standard (1985) Precisão simples 32 bits Sinal 1 bit Expoente 8 bits (deslocamento 127) Mantissa 23 bits (c/ bit escondido) Precisão dupla 64 bits Sinal 1 bit Expoente 11 bits (deslocamento 1023) Mantissa 52 bits (c/ bit escondido) Adoptado quase universalmente Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 326

10 Representações especiais Expoente=255 e mantissa= 0 + infinito - infinito Expoente=255 e mantissa <> 0 NaN (Not a Number) Dois valores para 0: Sinal = 0; expoente = 0, mantissa = 0 Sinal = 1; expoente = 0, mantissa = 0 Idem para os 64 bits Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 327

11 Erros de representação de reais O conjunto dos reais é contínuo : entre quaisquer dois números há um número infinito de reais Com um número limitado de bits de representação só podemos representar um número finito de valores. A representação é assim uma aproximação; quanto mais bits tivermos melhor a aproximação Não se consegue representar valores demasiado grandes ou valores absolutos demasiado pequenos Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 328

12 Erros de representação de reais Nas regiões representáveis: Procurar o número de vírgula flutuante mais aproximado do número real que se quer Este arredondamento introduz um erro O erro relativo (%): diferença entre números (erro) número pretendido Se aumentar o número de dígitos: de m, aumenta a densidade de pontos nas regiões representáveis: maior precisão de e, aumenta o tamanho das regiões representáveis: maior gama de valores Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 329

13 Erros de representação de reais Consideremos novamente a representação em 14 bits O formato representa números de -1, x2 15 a -1, x2-15 o 0 e de 1, x2-15 a 1, x2 15 Não consegue representar 2 19 ou por exemplo Também não consegue representar 128,25 pois é ,01 2 = 1, x2 7 mas os 9 bits não cabem nos 8 bits da mantissa podemos aproximar com o número 128,0 O erro relativo é: (128,25 128,0)/128,25 0,2 % Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 330

14 Propagação de erros Os erros podem acumular-se; os algoritmos devem tentar minimizá-los 1º exemplo: 128,25*128,25 = 16448,0625 por aproximação de 128,25 a 128: 128*128 = (entra erro=0,25 ; sai erro=64,0625 ~0,4%) 2º exemplo: (512+1)/8 = 64,125 = (512/8)+(1/8) 513 = não é representável, logo não se deve fazer a soma primeiro; 512/8 e 1/8 são representáveis, por isso devia-se reescrever a expressão nessa forma Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 331

15 Características dos números representáveis Precisão IEEE simples dupla Bit de sinal 1 1 Bits de expoente 8 11 Bits de mantissa Total de bits Expoente excesso 127 excesso 1023 Gama expoentes -126 a a Menor número abs. ~2-126 ~ Maior número abs. ~2 128 ~ em decimal ~10-38 a ~ a Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 332

16 Precisão dupla Valores representáveis overflow negativo valores negativos representáveis underflow underflow negativo positivo valores positivos representáveis overflow positivo Zero -1,1 * * * ,1 * Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 333

17 Operações em vírgula flutuante x = X* 2 ex y = Y* 2 ey Adição e subtracção: se ex == ey: x+y (X+Y)*2 ex x-y (X-Y)*2 ex se ex<>ey: há que tornar primeiro os expoentes iguais Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 334

18 Operações em vírgula flutuante Multiplicação e divisão: x*y X*2 ex *Y*2 ey = (X*Y)*2 ex+ey x/y (X*2 ex )/(Y*2 ey ) = (X/Y)*2 ex-ey (o resultado tem de ter sempre normalizado) Comparações: Verificar sinais Por exemplo: se x positivo e y negativo x>y se ex > ey, então x > y se ex == ey, então a comparação depende das mantissas X e Y Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 335

19 A unidade de vírgula flutuante (FPU) Floating Point Unit (Unidade de Vírgula Flutuante) Suporta as instruções sobre as representações de vírgula flutuante (FP) Soma, subtracção, multiplicação, divisão, comparação Pode usar os registos gerais do CPU ou dispor dos seus próprios registos Os registos gerais podem não comportar as representações de FP A norma exige instruções de conversão entre todas as representações de FP e as representações de inteiros Ao converter vírgula flutuante inteiro, o resultado pode sair do domínio válido dos inteiros Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 336

20 Resultado da FPU Os resultados das operações na FPU podem exceder o da representação disponível O resultado é arredondado para a representação permitida A FPU pode suportar vários arredondamentos: O mais perto, aquele cuja fracção seja par (bit menos significativo a 0), para baixo, para cima, ignorar os bits que não caibam na representação (truncar) FPU dispõe das suas próprias flags Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 337

21 FPU dos processadores Intel Nos processadores Intel: Unidade FPU, originalmente era um coprocessador (8087, 80287, 80387) A partir do foi integrada no próprio CPU Reconhece os seguintes tipos de dados: Inteiros c/ sinal (em compl. a 2): 16, 32 e 64 bits Vírgula flutuante (IEEE-754): 32, 64 e 80 bits Usa 8 registos internos de 80 bits organizados em pilha: Trabalha como uma máquina de pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 338

22 80x x87 A unidade FPU (ou 80x87) tem uma organização e registados diferentes do CPU 80x86 mas tem acesso à mesma memória central. Não é possível a transferência directa de valores entre registos CPU e registos FPU Registos Gerais CPU Registos De FPU flags Reg. Estado (FSW) BUS Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 339

23 Pilha de registos na FPU Intel Suporta operações de Load e Store: Load = push para pilha de registos Store = pop da pilha de registos O registo envolvido está implícito ST0 é sempre o registo no topo dessa pilha Depois vem ST1, ST2, bits TOP (3bits) ST3 ST2 ST1 ST0 ST7 ST6 ST5 ST4 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 340

24 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 341

25 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado 3 Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 342

26 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado 5 3 Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 343

27 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado Tira dois operandos da pilha e coloca lá o resultado 8 Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 344

28 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado 4 8 Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 345

29 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado Tira um operando da, o 4, pilha e coloca lá o resultado: Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 346

30 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado Tira dois operandos da pilha e coloca lá o resultado -32 Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 347

31 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado 2-32 Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 348

32 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado O resultado final está no topo da pilha -30 Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 349

33 Funcionamento de uma máquina de pilha Exemplo de avaliação de uma expressão: ( ) * Usando notação pós-fixa: * 2 + Avaliando usando uma pilha: Push 3 Push 5 Add Push 4 Change Sign Mul Push 2 Add Pop resultado O resultado final está no topo da pilha Pilha Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 350

34 Instruções de transferência Load e store, com conversão de tipos: Transferência com a memória Há sempre conversão automática dos tipos de dados para/de a representação interna de 80 bits da FPU: Reais IEEE: FLD end Push para a FPU do número em vírgula flutuante em end (Load Floating-point) FSTP end Pop da FPU como um número em vírgula flutuante para end (Store and Pop Floating-point) end pode referenciar valores em dword, qword ou tword Inteiros c/sinal: FILD end Push para a FPU do número inteiro em end (Load Integer) FISTP end Pop do topo da pilha FPU como um número inteiro para end (Store and Pop Integer) end pode referenciar valores em word, dword ou qword Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 351

35 Instruções de transferência (2) Transferir para memória, sem desempilhar o valor no topo da pilha FST dest FIST dest Store Floating-point Store Integer Load de constantes especiais pré-definidas: FLD1 Load constante 1 FLDZ Load constante 0 FLDPI Load constante π FLDL2E Load logaritmo de e na base 2... Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 352

36 Operações e operandos Operações sobre a pilha dos 8 registadores: STn com n=0..7 ST0 (ou ST) é o topo da pilha As operações aritméticas operam normalmente sobre o topo da pilha: 1. Desempilham os operandos e depois empilham o resultado 2. ou operam sobre o topo da pilha e outra posição da pilha 3. ou operam sobre o topo da pilha e uma posição de memória Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 353

37 Operações aritméticas A FPU do IA-32 não tem versões das operações aritméticas sem operandos Ou seja não exitem as operações FADD, FSUB, FMUL e FDIV Excepção é a operação de mudança de sinal FCHS ST0 = - ST0 As operações aritméticas têm a seguinte sintaxe: FADDP dest dest = ST0+dest e pop ST0 FSUBP dest dest = ST0-dest e pop ST0 FMULP dest dest = ST0*dest e pop ST0 FDIVP dest dest = ST0/dest e pop ST0 dest pode ser um endereço de memória ou um registo Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 354

38 Operações aritméticas Portanto para desempilhar os valores no topo da pilha, somá-los usamos FADDP ST1 1. ST1 = ST0 + ST1 2. POP ST ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 110 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 355

39 Operações aritméticas Portanto para desempilhar os valores no topo da pilha, somá-los usamos FADDP ST1 1. ST1 = ST0 + ST1 2. POP ST ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 110 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 356

40 Operações aritméticas Portanto para desempilhar os valores no topo da pilha, somá-los usamos FADDP ST1 1. ST1 = ST0 + ST1 2. POP ST ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 111 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 357

41 Mais operações aritméticas Versões sobre vírgula flutuante FADD end ST0 = ST0 + Mem[end] FADD STn ST0 = ST0 + STn com 0 n 7 FADD STn,ST0 STn = ST0 + STn com 0 n 7 FSUB end ST0 = ST0 - Mem[end] FSUBR end ST0 = Mem[end] ST0 FSUB STn ST0 = ST0 - STn com 0 n 7 FSUBR STn ST0 = STn ST0 com 0 n 7 (FSUB STn,ST0 e FSUBR STn,ST0) FMUL end ST0 = ST0 * Mem[end] (como no FADD) FDIV end ST0 = ST0 / Mem[end] (como no FSUB) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 358

42 Mais operações aritméticas Versões sobre inteiros FIADD end FISUB end FISUBR end ST0 = ST0 + (float) Mem[end] ST0 = ST0 - (float) Mem[end] ST0 = (float) Mem[end] ST0 FIMUL end FIDIV end FIDIVR end ST0 = ST0 * (float) Mem[end] ST0 = ST0 / (float) Mem[end] ST0 = (float) Mem[end] / ST0 Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 359

43 Operações aritméticas Se usarmos FADD ST1 não desempilhamos o operando em ST1 1. ST0 = ST0 + ST ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 110 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 360

44 Operações aritméticas Se usarmos FADD ST1 não desempilhamos o operando em ST0 1. ST0 = ST0 + ST ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 110 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 361

45 Registo de estado/flags FSW (16bits) tem campos de bits para: TOP (3 bits): indicam qual o reg. no topo da pilha (ST0) Condition codes: indicam o resultado da última comparação Bits que indicam a ocorrência de erros: FPE: erro de precisão FUE: erro de underflow FOE: erro de overflow FZE: erro de divisão por zero FDE: erro de normalização FIE: erro devido a operando inválido STF: indica stack overflow ou stack underflow FSTSW dest transfere o FSW para dest, para depois o programa poder testar os bits dest pode ser um endereço Memória ou registo AX (16bits) do CPU! Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 362

46 Comparações - FCOM Colocam o resultado da comparação nos bits C3,C2,C0 do registo de estado FSW FCOM operando FTST compara ST0 com operando (memória ou com STn) compara ST0 com zero Resultado: C3 C2 C0 INDICAÇÃO do resultado ST0> operando ST0< operando ST0= operando comparação inválida Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 363

47 Utilização da comparação As posições dos bits C0,C2,C3 no reg. FSW correspondem às flags do CPU de modo que: FSTSW AX SAHF copia o reg FSW para o AX copia o AH para o byte menos significativo do registo de EFLAGS Equivale a copiar: C3 ZF ; C2 PF ; C0 CF Pode então usar-se saltos condicionais para testar as flags: Salta se ST0 > operando: JA Salta se ST0 < operando: JB Salta se ST0 = operando: JE Salta se ST0 e operando não são comparáveis: JP Os processadores a partir do Pentium Pro têm a isntrução FCOMI que altera logo as flags do CPU Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 364

48 Outras operações A FPU suporta muitas outras operações: Senos, co-senos, tangentes e arcos de tangente Raiz quadrada Troca de sinal, valor absoluto Load de constantes: 1,0; 0,0; π; log 2 e; ln2; etc E muitas mais variantes das operações já vistas Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 365

49 Resultados das operações na FPU Overflow resultado demasiado grande (positivo ou negativo) Underflow resultado demasiado perto de zero, podendo resultar em zero por falta de precisão. Overflow e Underflow na FPU pode provocar a terminação do programa (crash) «Experienced programmers know that it s better for a program to crash than to have it produce incorrect, but plausible, results.» -- Null et.al. Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 366

50 Propriedades e comparação Devido aos arredondamentos e perca dos bits menos significativos, não podemos garantir que as operações na FPU são comutativas ou distributivas: (a + b) + c = a + (b + c)? a*(b + c) = ab + ac? Relembre o exemplo ("nossa" representação 14 bits): (512+1)/8 = 64,125 = (512/8)+(1/8) mas 513 = não é representável, logo não se deve fazer a soma primeiro; Também não podemos comparar directamente a igualdade entre dois números FP. Devemos considerar o erro admitido e verificar se a diferença entre os números está dentro desse erro: abs(x-y) < epsilon Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 367

51 Exemplo de utilização da FPU Exemplo de avaliação de uma expressão: ( ) * ( ) Usando notação pós-fixa: ,5 1 + * Avaliando usando FPU Intel: section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 368

52 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST7 ST6 ST5 ST4 ST3 ST2 ST1 ST0 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 369

53 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 111 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 370

54 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 111 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 371

55 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 110 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 372

56 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST2 ST1 ST0 ST7 ST6 ST5 ST4 ST3 101 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 373

57 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 110 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 374

58 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 111 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 375

59 Exemplo de utilização da FPU section.data var1 dd 5.1 var2 dd 4.5 tmp dd 0 section.bss resultado resq 1 section.text _start: mov dword [tmp], 3 fild dword [tmp] fadd dword [var1] fld dword [var2] fld1 faddp st1 fmulp st1 fstp qword [resultado] ST7 ST6 ST5 ST4 ST3 ST2 ST1 ST0 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 376

60 Outro exemplo de utilização da FPU Exemplo de avaliação de uma expressão: Número de ouro = (1 + 5)/2 Usando notação pós-fixa: / Avaliando usando FPU Intel usando uma subrotina: section.data five dd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov esp, ebp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 377

61 Outro exemplo de utilização da FPU section.data five dd 5 Two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret ST7 ST6 ST5 ST4 ST3 ST2 ST1 ST0 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 378

62 Outro exemplo de utilização da FPU section.data five dd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 379

63 Outro exemplo de utilização da FPU section.data five dd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 380

64 Outro exemplo de utilização da FPU section.data five dd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret ST1 ST0 ST7 ST6 ST5 ST4 ST3 ST2 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 381

65 Outro exemplo de utilização da FPU section.data five dd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 382

66 Outro exemplo de utilização da FPU section.data five dd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 383

67 Outro exemplo de utilização da FPU section.data five dd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret Resultado em st0 não eax ST0 ST7 ST6 ST5 ST4 ST3 ST2 ST1 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 384

68 Outro exemplo de utilização da FPU section.data fivedd 5 two dd 2 section.bss resultado resq 1 section.text call aureo fstp qword [resultado] aureo: push ebp mov ebp, esp fld1 fild dword [five] fsqrt faddp st1 fidiv dword [two] pop ebp ret ST7 ST6 ST5 ST4 ST3 ST2 ST1 ST0 FSW (16bits) Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 385

69 Arquitecturas Intel IA-32 CPU Registos de dados EAX EBX ECX EDX ESI EDI Registos de endereços EIP ESP EBP ALU Opera sobre os registos de dados e endereços Registo de estado: EFLAGS FPU ST7 ST6 ST5 ST4 ST3 ST2 ST1 ST0 Registo de estado: FSW Pilha de avaliação da FPU Memória Contem programas em execução, onde cada programa tem a seguinte informacão: Programa Dados do programa Código do programa Pilha de execução Arquitectura de Computadores (2008/2009): Programação de Processadores Intel 386

Aritmética de Ponto Flutuante

Aritmética de Ponto Flutuante Aritmética de Ponto Flutuante Formato Padrão IEEE 32 bits, Sinal, Expoente e Mantissa, Normalização, Conversão, Unidade de Ponto Flutuante Intel (FPU), Registradores e Instruções associados à FPU Orlando

Leia mais

Unidade de Ponto Flutuante - FPU. Baseado nos slides do Prof. Eduardo Tavares

Unidade de Ponto Flutuante - FPU. Baseado nos slides do Prof. Eduardo Tavares Unidade de Ponto Flutuante - FPU Baseado nos slides do Prof. Eduardo Tavares eagt@cin.ufpe.br FPU Os processadores atuais da família x86 possuem uma FPU (Unidade de Ponto Flutuante) dedicada para efetuar

Leia mais

Programação ao nível da máquina. Operações lógicas e aritméticas

Programação ao nível da máquina. Operações lógicas e aritméticas Programação ao nível da máquina Operações lógicas e aritméticas Operações lógicas e aritméticas Operações: aritméticas: add, sub, inc, dec, cmp lógicas: and, or, xor, not Realizadas pela ALU (Arithmetic

Leia mais

Métodos Numéricos. Turma CI-202-X. Josiney de Souza. josineys@inf.ufpr.br

Métodos Numéricos. Turma CI-202-X. Josiney de Souza. josineys@inf.ufpr.br Métodos Numéricos Turma CI-202-X Josiney de Souza josineys@inf.ufpr.br Agenda do Dia Aula 3 (10/08/15) Aritmética de ponto flutuante Representação de ponto flutuante Normalização Binária Decimal Situações

Leia mais

UNIVERSIDADE FEDERAL DE ITAJUBÁ MICROPROCESSADORES II

UNIVERSIDADE FEDERAL DE ITAJUBÁ MICROPROCESSADORES II UNIVERSIDDE FEDERL DE ITJUBÁ MICROPROCESSDORES II SÉRIE DE PROGRMS 8 1) Determine a função da sub-rotina a seguir. SubRot PROC Far Repeat: fld st(3) push bp fmulp st(3),st mov bp,sp fld1 sub sp, fadd st(1),st

Leia mais

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Introdução à Computação A Informação e sua Representação (Parte II) Prof. a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br

Leia mais

CCI-22 CCI-22. 2) Erros de arredondamento. Matemática Computacional

CCI-22 CCI-22. 2) Erros de arredondamento. Matemática Computacional Matemática Computacional 2) Erros de arredondamento Carlos Alberto Alonso Sanches Erros de representação e de cálculo Tipos de erros Erro inerente: sempre presente na incerteza das medidas experimentais

Leia mais

Arquitetura da FPU Intel

Arquitetura da FPU Intel Arquitetura da FPU Intel Software Básico (2007/1) Hélcio Mello Motivação Aplicações que manipulam números reais: Jogos / Simuladores CAD (Computer Aided Design) Aplicações científicas Solução Usam co-processador

Leia mais

Representando Instruções no Computador

Representando Instruções no Computador Representando Instruções no Computador Humanos aprenderam a pensar na base 10 Números podem ser representados em qualquer base Números mantidos no hardware como série de sinais eletrônicos altos e baixos

Leia mais

Universidade Federal de São João Del Rei - UFSJ

Universidade Federal de São João Del Rei - UFSJ Universidade Federal de São João Del Rei - UFSJ Instituída pela Lei 0.45, de 9/04/00 - D.O.U. de /04/00 Pró-Reitoria de Ensino de Graduação - PROEN Disciplina: Cálculo Numérico Ano: 03 Prof: Natã Goulart

Leia mais

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA. Representação de Dados Tipos de dados: Caracteres (letras, números n e símbolos). s Lógicos. Inteiros. Ponto flutuante: Notações decimais: BCD. A declaração de uma variável vel define o seu tipo. O tipo

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante Capítulo SETE Números em Ponto Fixo e Ponto Flutuante 7.1 Números em ponto fixo Observação inicial: os termos ponto fixo e ponto flutuante são traduções diretas dos termos ingleses fixed point e floating

Leia mais

Aritmética de Ponto Flutuante

Aritmética de Ponto Flutuante Aritmética de Ponto Flutuante Entre 1970 e 1980 um grupo formado por cientistas e engenheiros de diferentes empresas de computação realizou um trabalho intenso na tentativa de encontrar um padrão de representação

Leia mais

Eduardo Camponogara. DAS-5103: Cálculo Numérico para Controle e Automação. Departamento de Automação e Sistemas Universidade Federal de Santa Catarina

Eduardo Camponogara. DAS-5103: Cálculo Numérico para Controle e Automação. Departamento de Automação e Sistemas Universidade Federal de Santa Catarina Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-5103: Cálculo Numérico para Controle e Automação 1/48 Sumário Arredondamentos Erros 2/48 Sumário Arredondamentos

Leia mais

Sistema de ponto flutuante

Sistema de ponto flutuante Exemplo: FP(,4,,A) e FP(,4,,T) Sistema de ponto flutuante FP( b, p, q,_) = FP(, 4,, _ ) base 4 dígitos na mantissa dígitos no expoente A=Arredondamento T=Truncatura x ± =± m b t x =± d 1d d d 4 dígitos

Leia mais

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 CHIP Ano MHz Transistors Mem 8086 1978 5

Leia mais

Aula 2 - Cálculo Numérico

Aula 2 - Cálculo Numérico Aula 2 - Cálculo Numérico Erros Prof. Phelipe Fabres Anhanguera Prof. Phelipe Fabres (Anhanguera) Aula 2 - Cálculo Numérico 1 / 41 Sumário Sumário 1 Sumário 2 Erros Modelagem Truncamento Representação

Leia mais

Sistemas de Numeração (Aula Extra)

Sistemas de Numeração (Aula Extra) Sistemas de Numeração (Aula Extra) Sistemas de diferentes bases Álgebra Booleana Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 27/2 Sistemas de Numeração Um sistema de numeração

Leia mais

Arquitetura de Computadores. Prof. João Bosco Jr.

Arquitetura de Computadores. Prof. João Bosco Jr. Arquitetura de Computadores Prof. João Bosco Jr. Unidade II Aula 1 Nível ISA Posicionado entre a microarquitetura e o SO Define a arquitetura (Conjunto de Instruções) É a interface entre o Software e o

Leia mais

Linguagem de Montagem 2. Operações e Operandos

Linguagem de Montagem 2. Operações e Operandos Linguagem de Montagem 2 Operações e Operandos Revisão Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer Esse conjunto de instruções chamamos de algoritmo

Leia mais

Sistemas de Computação

Sistemas de Computação Sistemas de Computação Ponto Flutuante Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 26 de abril de 2010 Haroldo Gambini Santos Sistemas de Computação 1/18 Seção 1 Introdução 2 O Padrão

Leia mais

Aritmética de Ponto Flutuante e Noções de Erro. Ana Paula

Aritmética de Ponto Flutuante e Noções de Erro. Ana Paula Aritmética de Ponto Flutuante e Noções de Erro Sumário 1 Introdução 2 Sistemas de Numeração 3 Representação de Números Inteiros no Computador 4 Representação de Números Reais no Computador 5 Operações

Leia mais

Cálculo Numérico / Métodos Numéricos. Representação de números em computadores Mudança de base 14:05

Cálculo Numérico / Métodos Numéricos. Representação de números em computadores Mudança de base 14:05 Cálculo Numérico / Métodos Numéricos Representação de números em computadores Mudança de base 14:05 Computadores são "binários" Por que 0 ou 1? 0 ou 1 - "fácil" de obter um sistema físico Transistores

Leia mais

Unidade 5: Sistemas de Representação

Unidade 5: Sistemas de Representação Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação

Leia mais

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano 2012-1

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano 2012-1 ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender o que é notação em ponto flutuante Compreender a

Leia mais

Introdução aos Sistemas Computacionais

Introdução aos Sistemas Computacionais GUIÃO DE Introdução aos Sistemas Computacionais de Dulce Domingos e Teresa Chambel DI-FCUL GU ISC 01 11 Outubro 001 Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Campo Grande,

Leia mais

Nível da Arquitetura do Conjunto das Instruções

Nível da Arquitetura do Conjunto das Instruções Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Fluxo Seqüencial de Controle e Desvios (1) Fluxo de Controle: É a seqüência na qual instruções são dinamicamente executadas Isto

Leia mais

Notas de Cálculo Numérico

Notas de Cálculo Numérico Notas de Cálculo Numérico Túlio Carvalho 6 de novembro de 2002 2 Cálculo Numérico Capítulo 1 Elementos sobre erros numéricos Neste primeiro capítulo, vamos falar de uma limitação importante do cálculo

Leia mais

Análise de Arredondamento em Ponto Flutuante

Análise de Arredondamento em Ponto Flutuante Capítulo 2 Análise de Arredondamento em Ponto Flutuante 2.1 Introdução Neste capítulo, chamamos atenção para o fato de que o conjunto dos números representáveis em qualquer máquina é finito, e portanto

Leia mais

Capítulo 1 - Erros e Aritmética Computacional

Capítulo 1 - Erros e Aritmética Computacional Capítulo 1 - Erros e Carlos Balsa balsa@ipb.pt Departamento de Matemática Escola Superior de Tecnologia e Gestão de Bragança 2 o Ano - Eng. Civil, Electrotécnica e Mecânica Carlos Balsa Métodos Numéricos

Leia mais

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos Conjunto de instruções e modos de endereçamento aula 4 Profa. Débora Matos Conjunto de Instruções A = ((B + C) x D + E F)/(G x H) A H denotam posições da memória endereços As arquiteturas possuem as seguintes

Leia mais

Aula 1 Representação e Operações Aritméticas em Ponto Flutuante.

Aula 1 Representação e Operações Aritméticas em Ponto Flutuante. Aula 1 Representação e Operações Aritméticas em Ponto Flutuante. MS211 - Cálculo Numérico Marcos Eduardo Valle Departamento de Matemática Aplicada Instituto de Matemática, Estatística e Computação Científica

Leia mais

Entradas/Saídas. Programação por espera activa Programação por interrupções

Entradas/Saídas. Programação por espera activa Programação por interrupções Entradas/Saídas Programação por espera activa Programação por interrupções Programação por espera activa 1. O programa lê o estado do periférico: CPU pede ao controlador (IN) o valor no registo ESTADO

Leia mais

Linguagem de Montagem

Linguagem de Montagem Linguagem de Montagem Organização do PC Slides baseados em material associado ao livro Introduction to Assembly Language Programming, Sivarama Dandamudi 1 Processador Pentium Lançado em 1993 Versão melhorada

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores Prof. Fábio M. Costa Instituto de Informática UFG 1S/2004 Representação de Dados e Aritimética Computacional Roteiro Números inteiros sinalizados e nãosinalizados Operações

Leia mais

flutuante 11. Aritmética de vírgula Operações em números fraccionários

flutuante 11. Aritmética de vírgula Operações em números fraccionários 11. Aritmética de vírgula flutuante Vamos falar de aritmética não-inteira (i.e., fraccionária, ou de vírgula flutuante ). Este capítulo pode ser adiado pois precisas de conceitos teóricos importantes sobre

Leia mais

Universidade Federal de São Carlos Departamento de Matemática 083020 - Curso de Cálculo Numérico - Turma E Resolução da Primeira Prova - 16/04/2008

Universidade Federal de São Carlos Departamento de Matemática 083020 - Curso de Cálculo Numérico - Turma E Resolução da Primeira Prova - 16/04/2008 Universidade Federal de São Carlos Departamento de Matemática 08300 - Curso de Cálculo Numérico - Turma E Resolução da Primeira Prova - 16/0/008 1. (0 pts.) Considere o sistema de ponto flutuante normalizado

Leia mais

Representação de números em máquinas

Representação de números em máquinas Capítulo 1 Representação de números em máquinas 1.1. Sistema de numeração Um sistema de numeração é formado por uma coleção de símbolos e regras para representar conjuntos de números de maneira consistente.

Leia mais

Noções Básicas Sobre Erros

Noções Básicas Sobre Erros Noções Básicas Sobre Erros Wellington D. Previero previero@utfpr.edu.br http://paginapessoal.utfpr.edu.br/previero Universidade Tecnológica Federal do Paraná - UTFPR Câmpus Londrina Wellington D. Previero

Leia mais

1. SINTAXE DA LINGUAGEM ASSEMBLY

1. SINTAXE DA LINGUAGEM ASSEMBLY 1. SINTAXE DA LINGUAGEM ASSEMBLY Antes de se escrever em assembly, é conveniente construir um fluxograma do programa. Um fluxograma não faz referência à linguagem a utilizar, pelo que pode ser utilizado

Leia mais

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: 1 As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia e não têm a intenção de substituir o livro-texto, nem qualquer outra bibliografia. Introdução O Cálculo Numérico

Leia mais

Evolução dos Processadores

Evolução dos Processadores Evolução dos Processadores Arquitetura Intel Arquitetura x86 Micro Arquitetura P5 P6 NetBurst Core Processador Pentium Pentium Pro Pentium II Pentium III Pentium 4 Pentium D Xeon Xeon Sequence Core 2 Duo

Leia mais

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Sumário Unidade Lógica Aritmetrica Registradores Unidade Lógica Operações da ULA Unidade de Ponto Flutuante Representação

Leia mais

Aula 2 Sistemas de Numeração (Revisão)

Aula 2 Sistemas de Numeração (Revisão) Aula 2 Sistemas de Numeração (Revisão) Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm 1 O que fazer com essa apresentação 2 Agenda Breve revisão da aula anterior

Leia mais

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley Organização e Arquitetura de Computadores Aula 10 Ponto Flutuante Parte I 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Ponto Flutuante Parte I - 1 Panorama Números

Leia mais

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão Entradas/Saídas Programação por interrupções Conceitos gerais Programação da porta série Transmissão Problemas a resolver Como identificar a interrupção? Motivo da interrupção Que rotina executar? Como

Leia mais

Aula 9. Introdução à Computação. ADS IFBA www.ifba.edu.br/professores/antoniocarlos

Aula 9. Introdução à Computação. ADS IFBA www.ifba.edu.br/professores/antoniocarlos Aula 9 Introdução à Computação Ponto Flutuante Ponto Flutuante Precisamos de uma maneira para representar Números com frações, por exemplo, 3,1416 Números muito pequenos, por exemplo, 0,00000001 Números

Leia mais

Computador HIPO. Inicialmente vamos apresentar as unidades fundamentais de um computador:

Computador HIPO. Inicialmente vamos apresentar as unidades fundamentais de um computador: Computador HIPO Para introduzirmos as noções básicas de como funciona um computador, empregaremos um modelo imaginário (hipotético) que denominaremos de computador hipo. O funcionamento desse modelo tem

Leia mais

Representação Binária de Números

Representação Binária de Números Departamento de Informática Notas de estudo Alberto José Proença 01-Mar-04 Dep. Informática, Universidade do Minho Parte A: Sistemas de numeração e representação de inteiros A.1 Sistemas de numeração

Leia mais

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Representação de grandeza com sinal O bit mais significativo representa o sinal: 0 (indica um número

Leia mais

Modos de entrada/saída

Modos de entrada/saída Arquitectura de Computadores II Engenharia Informática (11545) Tecnologias e Sistemas de Informação (6621) Modos de entrada/saída Fonte: Arquitectura de Computadores, José Delgado, IST, 2004 Nuno Pombo

Leia mais

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação A Informação e sua Representação (Parte III) Prof.a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br

Leia mais

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas Conjunto de instruções O Conjunto de Instruções ISA Instruction Set Architecture Alguns conceitos... Linguagem máquina Combinação de 0 s e 1 s organizados segundo palavras que são as instruções que o processador

Leia mais

Aula 14: Instruções e Seus Tipos

Aula 14: Instruções e Seus Tipos Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos

Leia mais

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel O Nível ISA Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel Nível ISA (Instruction Set Architecture) Tipos de dados Inteiros (1, 2, 4 ou 8 bytes) Servem também para representar

Leia mais

Representação de Dados

Representação de Dados Representação de Dados Introdução Todos sabemos que existem diferentes tipos de números: fraccionários, inteiros positivos e negativos, etc. Torna-se necessária a representação destes dados em sistema

Leia mais

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM. Conceitos Básicos ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM. Conceitos Básicos ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM Conceitos Básicos 1-1 BITs e BYTEs Bit = BInary digit = vale sempre 0 ou elemento básico de informação Byte = 8 bits processados em paralelo (ao mesmo tempo) Word = n bytes (depende do processador em questão)

Leia mais

ANÁLISE NUMÉRICA DEC - 1996/97

ANÁLISE NUMÉRICA DEC - 1996/97 ANÁLISE NUMÉRICA DEC - 996/97 Teoria de Erros A Teoria de Erros fornece técnicas para quantificar erros nos dados e nos resultados de cálculos com números aproximados. Nos cálculos aproximados deve-se

Leia mais

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM Cap1.1 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 1. Conceitos básicos Bit = BInary digit = vale sempre 0 ou 1 elemento básico de informação Byte Word = 8 bits processados em paralelo (ao

Leia mais

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM Linguagem de programação Linguagem de Alto Nível próximo ao ser humano, escrita de forma textual. Ex: if (a==b) a=b+c; Linguagem de Montagem (Assembly) próximo à linguagem de máquina, escrita em códigos

Leia mais

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes Codificação Principais códigos utilizados Computadores e Equipamentos de Comunicações Digitais trabalham com representação e códigos. A codificação binária de sinais é largamente utilizada em Sistemas

Leia mais

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização

Leia mais

Aula 6 Aritmética Computacional

Aula 6 Aritmética Computacional Aula 6 Aritmética Computacional Introdução à Computação ADS - IFBA Representação de Números Inteiros Vírgula fixa (Fixed Point) Ponto Flutuante Para todos, a quantidade de valores possíveis depende do

Leia mais

Programação ao nível da máquina

Programação ao nível da máquina Programação ao nível da máquina Ponto de vista do programador O nível Assembly Modelo de programação Assembler (processo de compilação da linguagem C) Que assembly para AC? Introdução ao assembly NASM

Leia mais

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I: Unidade: Unidade Lógica e Aritmética e Registradores Unidade I: 0 Unidade: Unidade Lógica e Aritmética e Registradores UNIDADE LÓGICA E ARITMÉTICA E REGISTRADORES O Processador é um chip com milhares de

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: 1 UNIVERSIDADE FEDERAL DE VIÇOSA Departamento de Matemática - CCE Cálculo Numérico - MAT 271 Prof.: Valéria Mattos da Rosa As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia

Leia mais

Arquitetura de Computadores. Linguagem de Máquina

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

Leia mais

Noções Básicas de Erros

Noções Básicas de Erros Noções Básicas de Erros PROF. ALIRIO SANTOS DE SÁ ALIRIOSA@UFBA.BR MATERIAL ADAPTADA DOS SLIDES DA DISCIPLINA DE CÁLCULO NUMÉRICO DOS PROFESSORES BRUNO QUEIROZ, JOSÉ QUEIROZ E MARCELO BARROS (UFCG). DISPONÍVEL

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 3 - O NÍVEL DA ARQUITETURA DO CONJUNTO DAS INSTRUÇÕES (ISA) (Nível Convencional de Máquina) 1. INTRODUÇÃO Este é o nível responsável por fazer a ligação entra a parte de hardware e a parte de software

Leia mais

CURSO de CIÊNCIA DA COMPUTAÇÃO - Gabarito

CURSO de CIÊNCIA DA COMPUTAÇÃO - Gabarito UNIVERSIDADE FEDERAL FLUMINENSE TRANSFERÊNCIA 2 o semestre letivo de 2005 e 1 o semestre letivo de 2006 CURSO de CIÊNCIA DA COMPUTAÇÃO - Gabarito Verifique se este caderno contém : INSTRUÇÕES AO CANDIDATO

Leia mais

Truques e Dicas. = 7 30 Para multiplicar fracções basta multiplicar os numeradores e os denominadores: 2 30 = 12 5

Truques e Dicas. = 7 30 Para multiplicar fracções basta multiplicar os numeradores e os denominadores: 2 30 = 12 5 Truques e Dicas O que se segue serve para esclarecer alguma questão que possa surgir ao resolver um exercício de matemática. Espero que lhe seja útil! Cap. I Fracções. Soma e Produto de Fracções Para somar

Leia mais

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Lógica Aula 2 Técnicas de Programação Criando algoritmos Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Criando

Leia mais

Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.

Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011. Programação Funcional Aula 5 Funções Recursivas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011.2 1/39 1 Funções recursivas 2 Recursividade mútua 3 Recursividade

Leia mais

CAPÍTULO 6 ARITMÉTICA DIGITAL

CAPÍTULO 6 ARITMÉTICA DIGITAL CAPÍTULO 6 ARITMÉTICA DIGITAL Introdução Números decimais Números binários positivos Adição Binária Números negativos Extensão do bit de sinal Adição e Subtração Overflow Aritmético Circuitos Aritméticos

Leia mais

Arquitectura de Computadores I

Arquitectura de Computadores I Representação de Números e Aritmética Binária António M. Gonçalves Pinheiro Departamento de Física Covilhã - Portugal pinheiro@ubi.pt Base Binária Aritmética Binária Base Hexadecimal Base Octal Representação

Leia mais

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Teoria de Erros

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Teoria de Erros Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Lic. Eng. Biomédica e Bioengenharia-2009/2010 O que é a Análise Numérica? Ramo da Matemática dedicado ao estudo e desenvolvimento de métodos (métodos

Leia mais

Sistemas de Numeração

Sistemas de Numeração Departamento de Informática Sistemas de Numeração Notas de estudo Alberto José Proença Luís Paulo Santos 18-Fev-05 1. Sistemas de numeração e representação de inteiros 1.1. Sistemas de numeração 1.2. Conversão

Leia mais

Linguagem de Montagem

Linguagem de Montagem Linguagem de Montagem Procedimentos e a Pilha Slides baseados em material associado ao livro Introduction to Assembly Language Programming, Sivarama Dandamudi 1 O que é a pilha? A pilha é uma estrutura

Leia mais

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy) Capítulo 4 João Lourenço Joao.Lourenco@di.fct.unl.pt Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa 2007-2008 MARIE (Machine Architecture Really Intuitive and Easy) Adaptado dos transparentes

Leia mais

Arquitectura de Computadores ARQC MIPS. Exemplos. Serviços de Sistema

Arquitectura de Computadores ARQC MIPS. Exemplos. Serviços de Sistema Arquitectura de Computadores ARQC MIPS Exemplos 1 Serviços de Sistema 2 O MIPS tem 32 registradores de precisão simples (32 bits) para manipular números em ponto flutuante Registradores nomeados $f0 $f31

Leia mais

Microprocessadores. Arquitectura Geral de Microprocessador

Microprocessadores. Arquitectura Geral de Microprocessador Arquitectura Geral de Microprocessador António M. Gonçalves Pinheiro Departamento de Física Covilhã - Portugal pinheiro@ubi.pt Modelo de von Neuman Barramento de Endereços µprocessador Memória Entrada/Saída

Leia mais

A FÓRMULA DE CONVERSÃO ENTRE AS UNIDADES É: F = 1.8 C + 32.0

A FÓRMULA DE CONVERSÃO ENTRE AS UNIDADES É: F = 1.8 C + 32.0 UTILIZANDO NOSSA MÁQUINA HIPOTÉTICA VAMOS CONSTRUIR UM PROGRAMA PARA CONVERTER VALORES DE UMA UNIDADE PARA OUTRA. O NOSSO PROGRAMA RECEBE UM VALOR NUMÉRICO QUE CORRESPONDE A UMA TEMPERATURA EM GRAUS CELSIUS

Leia mais

Introdução à Engenharia de Computação

Introdução à Engenharia de Computação Introdução à Engenharia de Computação Tópico: Organização Básica de um Computador Digital Introdução à Engenharia de Computação 2 Componentes de um Computador Computador Eletrônico Digital É um sistema

Leia mais

Representação de Dados Inteiros com sinal

Representação de Dados Inteiros com sinal Representação de Dados Inteiros com sinal 1 Representação de Inteiros Com n bits, podemos ter 2 n valores distintos Considerando só inteiros não-negativos (unsigned) a faixa de valores é [0, 2 n -1] Considerando

Leia mais

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64 Arquitecturas Alternativas Pipelining Super-escalar VLIW IA-64 Pipeline de execução A execução de uma instrução passa por várias fases: Vimos o ciclo: fetch, decode, execute fetch decode execute instrução

Leia mais

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90. Capítulo 8. CICLOS OBJETIVOS DO CAPÍTULO Conceito de ciclo Comandos do FORTRAN: DO END DO, EXIT 8.1 programa8a.f90 Para inicializar as atividades deste capítulo, deve-se executar: 1) Para acessar o programa

Leia mais

Organização e Arquitetura de Computadores. Aula 11 Ponto Flutuante Parte II. 2002 Juliana F. Camapum Wanderley

Organização e Arquitetura de Computadores. Aula 11 Ponto Flutuante Parte II. 2002 Juliana F. Camapum Wanderley Organização e Arquitetura de Computadores Aula 11 Ponto Flutuante Parte II 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Ponto Flutuante Parte II - 1 Revisão PF

Leia mais

Organização de Computadores Como a informação é processada?

Organização de Computadores Como a informação é processada? Curso de ADS/DTEE/IFBA Organização de Computadores Como a informação é processada? Prof. Antonio Carlos Referências Bibliográficas: 1. Ciência da Computação: Uma visão abrangente - J.Glenn Brokshear 2.

Leia mais

Cálculo numérico. ln 1 = 0. Representação numérica. Exemplo. Exemplos. Professor Walter Cunha. ln 1. I s

Cálculo numérico. ln 1 = 0. Representação numérica. Exemplo. Exemplos. Professor Walter Cunha. ln 1. I s Representação numérica Cálculo numérico Professor Walter Cunha Um conjunto de ferramentas ou métodos usados para se obter a solução de problemas matemáticos de forma aproximada. Esses métodos se aplicam

Leia mais

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 LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos

Leia mais

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos LÓGICA DE PROGRAMAÇÃO Vitor Valerio de Souza Campos Exemplos de algoritmos Faça um algoritmo para mostrar o resultado da multiplicação de dois números. Algoritmo em descrição narrativa Passo 1 Receber

Leia mais

Capítulo 5: Aplicações da Derivada

Capítulo 5: Aplicações da Derivada Instituto de Ciências Exatas - Departamento de Matemática Cálculo I Profª Maria Julieta Ventura Carvalho de Araujo Capítulo 5: Aplicações da Derivada 5- Acréscimos e Diferenciais - Acréscimos Seja y f

Leia mais

Assembly na arquitetura IA-32 com NASM no Linux

Assembly na arquitetura IA-32 com NASM no Linux Assembly na arquitetura IA-32 com NASM no Linux Prof. Dr. Luciano José Senger 1 Introdução A Figura 1 mostra os registradores principais para a arquitetura IA-32. Essa arquitetura trabalha com palavras

Leia mais

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2) Arquitectura de um computador Caracterizada por: Conjunto de instruções do processador (ISA Estrutura interna do processador (que registadores existem, etc Modelo de memória (dimensão endereçável, alcance

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES ARQUITETURA DE COMPUTADORES Sistema de Numeração Prof Daves Martins Msc Computação de Alto Desempenho Email: daves.martins@ifsudestemg.edu.br Sistemas Numéricos Principais sistemas numéricos: Decimal 0,

Leia mais