Académique Documents
Professionnel Documents
Culture Documents
Formato Padro IEEE 32 bits, Sinal, Expoente e Mantissa, Normalizao, Converso, Unidade de Ponto Flutuante Intel (FPU), Registradores e Instrues associados FPU Orlando Figueiredo, Rio Claro, Maio de 2006
inevitvel trunc-los
Ponto fixo
O separador da parte inteira e da parte fracionria (ponto nos EUA, vrgula no Brasil) permanece numa mesma casa Similar notao cientfica O separador varia de casa, conforme o expoente da potncia associada
Ponto flutuante
Exemplo: (101,11 x 10
)2
Sinal: 1 bit Expoente: 8 bits Mantissa: 23 bits Sinal: 1 bit Expoente: 11 bits Mantissa: 52 bits
31 30 23 22 0 1 11111111 11111111111111111111111
A mantissa um nmero binrio fracionrio O valor de uma casa metade do valor da casa vizinha esquerda Esquematicamente
__ __ __ __ , __ __ __ __ __ 8 4 2 1 23 22 21 20 2-1 2-2 2-3 2-4 2-5 __ 2-6 __ ... 2-7 1/8 1/16 1/32 1/64 1/128
R: Metade de 1,0 (= ) R: Metade de 0,1 (= ) R: 0,11 = 0,1 + 0,01 = + = R: 2 + 1 + + 0/4 + 1/8 + 1/16 = 3,6875
Expoente
Normalizao da Mantissa
O separador deve ficar imediatamente aps o primeiro algarismo significativo Normalizado 1,101101 1,01 1,0001 1,0000011 Expoente 3 -3 0 7
Empacotamento Final
A mantissa sempre normalizada, logo o bit mais significativo sempre 1 e, por isso, no precisa ser armazenado
Valor
-1,11 +1101,101 -0,00101
Exerccios:
-100111,0 +0,0000001101011
R: 0,001100110011001100110011001100110011...
As operaes aritmticas sobre nmeros representados em ponto flutuante so muito onerosas Foi preciso implement-las por hardware para melhorar o desempenho geral dos computadores Originalmente, esse hardware era chamado coprocessador aritmtico e era vendido separadamente
Posteriormente, ele foi incorporado em definitivo ao processador principal e passou a ser chamado de FPU
Registradores da FPU
Instrues
Exemplos: FADD FLD FST FMUL FINIT FSUBR FDIV FDIVR FADDP etc
FLD src
LD um mnemnico para LoaD (carregar) Escreve um valor no topo da pilha FPU O valor est em src, que deve ser obrigatoriamente uma posio de memria
FST dest
ST um mnemnico para STore (armazenar) L o valor no topo da pilha FPU O valor copiado para dest, que deve ser obrigatoriamente uma posio de memria
Instrues Aritmticas
FADD
FSUB
FMUL
FDIV
Ex: fadd
Nesse caso, a operao feita sobre os dois registradores que esto no topo da pilha, ST(0) e ST(1)
Tudo se passa como se os dois fossem retirados da pilha para a realizao da operao e o resultado fosse colocado na pilha ao final
ST(0) e ST(1) so removidos da pilha. 0.6 passa a ser o ST(0). Faz-se a conta 3.0-4.0, que resulta em -1.0. O resultado colocado na pilha e passa a ser o novo ST(0). A pilha circular. Abaixo de ST(0) est ST(1) e assim sucessivamente. Abaixo de ST(7), est ST(o). medida que ST(0) avana ou recua, todo o conjunto vai junto.
.data dois REAL4 2.0 base REAL4 ? ;a ser lida alt .code ;Aps a entrada de dados: fld base fld alt fmul fld dois fdiv REAL4 ? ;idem
1 7 + 6 * ou 617+*
As instrues aritmticas podem ser utilizadas com um operando que corresponde a uma posio da memria Nesse caso, a operao realizada entre o operando e o ST(0), sendo ele o destino
.data dois REAL4 2.0 base REAL4 ? ;a ser lida alt .code ;Aps a entrada de dados: fld base mul alt ;ST<- ST * alt fdiv dois ;ST<- ST / 2 REAL4 ? ;idem
FSUBR
O R de reversa Sem operandos: calcula ST - ST(1) Com um operando: calcula operando ST Com dois operandos: calcula op2 op1 Sem operandos: calcula ST / ST(1) Com um operando: calcula operando / ST Com dois operandos: calcula op2 / op1
FDIVR
Todas as instrues mostradas anteriormente requerem que os operandos que estejam na memria estejam no formato de ponto flutuante possvel trabalhar com variveis inteiras
A converso feita automaticamente Se o dado na memria levado para a FPU durante a operao, converte-se o dado de inteiro para ponto flutuante Se o dado levado da FPU para a memria, converte-se o dado de ponto flutuante para inteiro
Denotam-se as operaes com operandos inteiros adicionando-se um I depois do F que inicia o mnemnico da operao Exemplos:
FILD
FIADD
FISUBR
Extra POP
Existe a opo de se apagar o resultado da operao da pilha imediamente aps a operao Isso conhecido como extra POP Denota-se o extra POP adicionando-se a letra P no final do mnemnico Exemplos:
Carregando Constantes
Mais Instrues
finit
Inicializa a FPU Inverte o sinal de ST Comparao Resultado nos flags C0, C1 e C2 da FPU
fchs
fcom
Referncias
IRVINE, KIP. 4.ed. Captulo 17, no CD. DANDAMUDI, SIVARANA. Introduction to Assembly Language Programming. 2.ed. Springer, 2005. Captulo 17.