Documente Academic
Documente Profesional
Documente Cultură
CARRY
C C
O O
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
SS
SIGN
ZERO ZZ
7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
OVERFLOW C C O O
Abril 2010
SEM SINAL COM SINAL SEM SINAL COM SINAL Arq. e Org. Computadores - Prof. Gortan - 8. Aula - FPU
O VALOR DE BL SUBTRADO DE AL - RESULTADO VAI PARA AL SUB AL, BL - - O VALOR DE BL SUBTRADO DE AL - RESULTADO VAI PARA AL SUB AL, BL O VALOR DE BL SUBTRADO DE AL - RESULTADO DESCARTADO CMP AL,BL - - O VALOR DE BL SUBTRADO DE AL - RESULTADO DESCARTADO CMP AL,BL AS DUAS INSTRUES ACIMA AFETAM C, , O, S E Z DE FORMA IDNTICA AS DUAS INSTRUES ACIMA AFETAM C O, S E Z DE FORMA IDNTICA
A INSTRUO CMP A MESMA UTILIZADA TANTO PARA INTEIROS COM OU SEM SINAL A INSTRUO CMP A MESMA UTILIZADA TANTO PARA INTEIROS COM OU SEM SINAL O RESULTADO DA COMPARAO ENTRETANTO DEVE SER ANALISADO DE FORMA ESPECFICA E O RESULTADO DA COMPARAO ENTRETANTO DEVE SER ANALISADO DE FORMA ESPECFICA E DIFERENTE EM CADA CASO. DIFERENTE EM CADA CASO. POR ESSE MOTIVO EXISTEM INSTRUES DE SALTO CONDICIONAL (JX..) ESPECFICAS PARA POR ESSE MOTIVO EXISTEM INSTRUES DE SALTO CONDICIONAL (JX..) ESPECFICAS PARA COMPARAES COM EE SEM SINAL COMPARAES COM SEM SINAL
SEM SINAL: JA, JB, JE, JAE, JBE SEM SINAL: JA, JB, JE, JAE, JBE
COM SINAL: JG, JL, JZ, JGE, JLE COM SINAL: JG, JL, JZ, JGE, JLE
Abril 2010
SEM SINAL SEM SINAL JUMP IF .. ABOVE BELOW EQUAL ABOVE OR EQ BELOW OR EQ MNEM. MNEM JA JB JE JAE JBE FLAGS Z=0 E C=0 C=1 Z=1 C=0 C=1 OU Z=1 JUMP IF .. GREATER LESS ZERO
COM SINAL COM SINAL MNEM. JG JL JZ JGE JLE FLAGS Z=0 E S=0 S !=O Z=1 S=0 S!=O OU Z=1
GREATER OR EQ LESS OR EQ
PERGUNTA: PERGUNTA: COMO ESTENDER UM NMERO SEM SINAL PARA UMA LARGURA MAIOR DE BITS? COMO ESTENDER UM NMERO SEM SINAL PARA UMA LARGURA MAIOR DE BITS? SINAL? EE UM NMERO COM SINAL? UM NMERO COM SINAL? SINAL?
4 BITS SEM SINAL: 4 BITS SEM SINAL: 4 BITS COM SINAL: 4 BITS COM SINAL:
0000 1010 BINRIO 1010 = 10 DECIMAL - EM 8 BITS BINRIO =___________________ BINRIO 1010 = 10 DECIMAL - EM 8 BITS BINRIO =___________________ 1010 = - 6 DECIMAL - EM 8 BITS BINRIO=___________________ BINRIO=___________________ 1111 1010 BINRIO=___________________ 1010 = - 6 DECIMAL - EM 8 BITS BINRIO=___________________
Abril 2010
MULTIPLICAES DE OPERANDOS DE 88 BITS PRODUZEM RESULTADOS DE 16 BITS MULTIPLICAES DE OPERANDOS DE BITS PRODUZEM RESULTADOS DE 16 BITS MULTIPLICAES DE OPERANDOS DE 16 BITS PRODUZEM RESULTADOS DE 32 BITS MULTIPLICAES DE OPERANDOS DE 16 BITS PRODUZEM RESULTADOS DE 32 BITS MULTIPLICAES DE OPERANDOS DE 32 BITS PRODUZEM RESULTADOS DE 64 BITS MULTIPLICAES DE OPERANDOS DE 32 BITS PRODUZEM RESULTADOS DE 64 BITS
Abril 2010
MULTIPLICAO DE INTEIROS COM E SEM SINAL MULTIPLICAO DE INTEIROS COM E SEM SINAL
MULTIPLICAES COM SINAL PRODUZEM RESULTADOS DIFERENTES DE MULTIPLICAES SEM SINAL MULTIPLICAES COM SINAL PRODUZEM RESULTADOS DIFERENTES DE MULTIPLICAES SEM SINAL
EXEMPLO COM LARGURA DOS OPERANDOS == 4 BITS: EXEMPLO COM LARGURA DOS OPERANDOS 4 BITS:
22 X -3 = -2 X 3 = -6 X -3 = -2 X 3 = -6
- - 2 = 1110 = 14 2 = 1110 = 14
- - 3 = 1101 = 13 3 = 1101 = 13
- - 6 = 1010 = 10 6 = 1010 = 10
NO IGUAL A
O RESULTADO CORRETO EM 8 BITS -6 = FA h = 1111 1010 O RESULTADO CORRETO EM 8 BITS -6 = FA h = 1111 1010
CONCLUSO: SO NECESSRIAS INSTRUES DIFERENTES PARA MULTIPLICAES COM E SEM SINAL CONCLUSO: SO NECESSRIAS INSTRUES DIFERENTES PARA MULTIPLICAES COM E SEM SINAL
Abril 2010
DIVISORES EE QUOCIENTES DE DIVISORES QUOCIENTES DE DIVISORES E QUOCIENTES DE DIVISORES E QUOCIENTES DE DIVISORES EE QUOCIENTES DE DIVISORES QUOCIENTES DE
88 BITS PRECISAM DE DIVIDENDOS DE 16 BITS BITS PRECISAM DE DIVIDENDOS DE 16 BITS 16 BITS PRECISAM DE DIVIDENDOS DE 32 BITS 16 BITS PRECISAM DE DIVIDENDOS DE 32 BITS 32 BITS PRECISAM DE DIVIDENDOS DE 64 BITS 32 BITS PRECISAM DE DIVIDENDOS DE 64 BITS
Abril 2010
DIVISO DE INTEIROS COM E SEM SINAL DIVISO DE INTEIROS COM E SEM SINAL
DE FORMA ANLOGA MULTIPLICAO, PARA DIVIDIR INTEIROS SEM EE COM SINAL DE FORMA ANLOGA MULTIPLICAO, PARA DIVIDIR INTEIROS SEM COM SINAL PRECISAMOS DE INSTRUES DIFERENTES: DIV EE IDIV PRECISAMOS DE INSTRUES DIFERENTES: DIV IDIV
SE ISSO NO FOR RESPEITADO, O QUOCIENTE PODE NO CABER NA LARGURA ESPECIFICADA SE ISSO NO FOR RESPEITADO, O QUOCIENTE PODE NO CABER NA LARGURA ESPECIFICADA SER ENTO GERADA UMA EXCEAO #DIV (DIVIDE BY ZERO OR DIVIDE OVERFLOW). SER ENTO GERADA UMA EXCEAO #DIV (DIVIDE BY ZERO OR DIVIDE OVERFLOW).
EXEMPLO: DIVIDIR -13 POR 55 OBTENDO QUOCIENTE = -2 E RESTO = -3 USANDO 8 BITS EXEMPLO: DIVIDIR -13 POR OBTENDO QUOCIENTE = -2 E RESTO = -3 USANDO 8 BITS
mov al, -13 ;; dividendo 0xF3 em AL (= 243 sem sinal)) mov al, -13 dividendo 0xF3 em AL (= 243 sem sinal cbw ;; estende com sinal para AX -> 0xFFF3 cbw estende com sinal para AX -> 0xFFF3 ;; (= 65523 sem sinal) (= 65523 sem sinal) mov bl, 55 ;; divisor em BL mov bl, divisor em BL div bl ;; diviso sem sinal -> gera exceo div bl diviso sem sinal -> gera exceo ;; (65.523/5 == 13.104 -- no cabe em al) (65.523/5 13.104 no cabe em al)
13.104 NO CABE EM AL (MXIMO 255) E UMA EXCEO DE DIVIDE OVERFLOW GERADA; 13.104 NO CABE EM AL (MXIMO 255) E UMA EXCEO DE DIVIDE OVERFLOW GERADA; O CORRETO PORTANTO UTILIZAR IDIV O CORRETO PORTANTO UTILIZAR IDIV
Abril 2010
COMO ESTENDER INTEIROS PARA LARGURAS MAIORES COMO ESTENDER INTEIROS PARA LARGURAS MAIORES
INSTRUES UTILIZADAS PARA INTEIROS COM SINAL: INSTRUES UTILIZADAS PARA INTEIROS COM SINAL:
CBW CBW ;; ESTENDE DE ESTENDE DE AL AL CWD ;; ESTENDE DE AX CWD ESTENDE DE AX CDQ ;; ESTENDE DE EAX CDQ ESTENDE DE EAX CWDE ;; ESTENDE DE CWDE ESTENDE DE AX AX MOVSX ;; CARREGA DE 88 MOVSX CARREGA DE DE DE 16 16
PARA PARA PARA PARA PARA PARA PARA PARA PARA PARA PARA PARA
AX (AH ++ AL) AX (AH AL) DX ++ AX DX AX EDX ++ EAX EDX EAX EAX EAX 16 OU 32 BITS OU 16 OU 32 BITS OU 32 BITS 32 BITS
INSTRUES UTILIZADAS PARA INTEIROS SEM SINAL: INSTRUES UTILIZADAS PARA INTEIROS SEM SINAL:
88 16 16
AS INSTRUES PARA ESTENDER INTEIROS SO TEIS AO SE EXECUTAR DIVISES COM AS INSTRUES PARA ESTENDER INTEIROS SO TEIS AO SE EXECUTAR DIVISES COM INTEIROS, PARA SE PREPARAR O DIVIDENDO COM A LARGURA ADEQUADA OPERAO. INTEIROS, PARA SE PREPARAR O DIVIDENDO COM A LARGURA ADEQUADA OPERAO.
Abril 2010
DESLOCAMOS X DE 1 POSIO PARA A ESQUERDA E DESLOCAMOS X DE 1 POSIO PARA A ESQUERDA E ACUMULAMOS COM X DESLOCADO DE 3 POSIES PARA A ESQUERDA ACUMULAMOS COM X DESLOCADO DE 3 POSIES PARA A ESQUERDA DIVISES DE INTEIROS POR POTNCIAS DE 2 PODEM SER REALIZADAS MAIS RAPIDAMENTE DIVISES DE INTEIROS POR POTNCIAS DE 2 PODEM SER REALIZADAS MAIS RAPIDAMENTE UTILIZANDO-SE A INSTRUO DE DESLOCAMENTO DIREITA. UTILIZANDO-SE A INSTRUO DE DESLOCAMENTO DIREITA. DESLOCAR UM INTEIRO DE UMA POSIO PARA A DIREITA SIGNIFICA: DESLOCAR UM INTEIRO DE UMA POSIO PARA A DIREITA SIGNIFICA: DESLOCAR SEUS TODOS SEUS BITS PARA A DIREITA E DESLOCAR SEUS TODOS SEUS BITS PARA A DIREITA E PREENCHER SUA POSIO MAIS SIGNIFICATIVA COM: PREENCHER SUA POSIO MAIS SIGNIFICATIVA COM: A) INTEIROS SEM SINAL: ZERO A) INTEIROS SEM SINAL: ZERO B) INTEIROS COM SINAL: SINAL B) INTEIROS COM SINAL: SINAL LOGO SO NECESSRIAS DUAS INSTRUES DIFERENTES PARA DESLOCAMENTOS DIREITA: LOGO SO NECESSRIAS DUAS INSTRUES DIFERENTES PARA DESLOCAMENTOS DIREITA: A) SHR SHIFT LOGIC RIGHT - PARA INTEIROS SEM SINAL A) SHR SHIFT LOGIC RIGHT - PARA INTEIROS SEM SINAL B) SAR SHIFT ARITHMETIC RIGHT - - PARA INTEIROS COM SINAL PARA INTEIROS COM SINAL B) SAR SHIFT ARITHMETIC RIGHT
Abril 2010
== B2 H B2 H
Abril 2010
10
Abril 2010
11
ALTERNATIVA: ALTERNATIVA:
0,178 =
CONVERTENDO 11.665 EM BINRIO EE DESLOCANDO A VRGULA 16 CASAS ESQUERDA CONVERTENDO 11.665 EM BINRIO DESLOCANDO A VRGULA 16 CASAS ESQUERDA OBTEMOS O MESMO RESULTADO ANTERIOR: OBTEMOS O MESMO RESULTADO ANTERIOR: 0, 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1
O MTODO ACIMA SUGERE UMA FORMA PRTICA DE DESCOBRIR SE UMA O MTODO ACIMA SUGERE UMA FORMA PRTICA DE DESCOBRIR SE UMA DETERMINADA FRAO TER UMA REPRESENTAO EXATA EM nn BITS: DETERMINADA FRAO TER UMA REPRESENTAO EXATA EM BITS:
n MULTIPLICAMOS A FRAO POR 22n E VERIFICAMOS SE AINDA CONTINUAMOS COM MULTIPLICAMOS A FRAO POR E VERIFICAMOS SE AINDA CONTINUAMOS COM UMA PARTE FRACIONRIA. UMA PARTE FRACIONRIA.
ESSE MTODO TIL QUANDO SE DISPE DE UMA CALCULADORA QUE CONVERTE ESSE MTODO TIL QUANDO SE DISPE DE UMA CALCULADORA QUE CONVERTE INTEIROS EM BINRIO MAS NO CONVERTE FRAES. INTEIROS EM BINRIO MAS NO CONVERTE FRAES.
Abril 2010
12
PROF. WILLIAM KAHN - EM 1997 PROF. WILLIAM KAHN - EM 1997 (PARTICIPANTE DO DESENVOLVIMENTO DO COPROCESSADOR NUMRICO INTEL 8087 (PARTICIPANTE DO DESENVOLVIMENTO DO COPROCESSADOR NUMRICO INTEL 8087 E DO GRUPO DE TRABALHO DE CRIAO DA NORMA E DO GRUPO DE TRABALHO DE CRIAO DA NORMA IEEE 457 SOBRE PROCESSAMENTO NUMRICO). IEEE 457 SOBRE PROCESSAMENTO NUMRICO).
O COPROCESSADOR NUMRICO 8087 TEVE SEU DESENVOLVIMENTO INICIADO EM 1974. O COPROCESSADOR NUMRICO 8087 TEVE SEU DESENVOLVIMENTO INICIADO EM 1974. FOI LANADO NO MERCADO EM 1977 FOI LANADO NO MERCADO EM 1977 INTRODUZIA INOVAES: UNDERFLOW GRADUAL - - FUNES TRANSCENDENTAIS INTRODUZIA INOVAES: UNDERFLOW GRADUAL FUNES TRANSCENDENTAIS A NORMA IEEE 754 COMEOU A SER DISCUTIDA EM 1974 A NORMA IEEE 754 COMEOU A SER DISCUTIDA EM 1974 FOI OFICIALIZADA EM 1985 FOI OFICIALIZADA EM 1985
Abril 2010
13
NMEROS REAIS BINRIOS CODIFICADOS DIGITALMENTE NMEROS REAIS BINRIOS CODIFICADOS DIGITALMENTE -1000 -100 -10 -1 0 1 10 100
REPRESENTAO: REPRESENTAO:
EXPOENTE DE 2
FRAO OU MANTISSA
Abril 2010
14
SOLUO: SOLUO: A) PARTE INTEIRA: A) PARTE INTEIRA: B) PARTE FRACIONRIA: B) PARTE FRACIONRIA: C) NORMALIZAO: C) NORMALIZAO: BINRIO 178 DECIMAL == 1011 0010 BINRIO BINRIO 178 DECIMAL 1011 0010 BINRIO 0,125 DECIMAL = 1/8 = 2-3-3 0,001 BINRIO = 0,125 DECIMAL = 1/8 = 2 = 0,001 BINRIO 10110010,001 = 1,0110010001 x 27 7 10110010,001 = 1,0110010001 x 2
7 + 127 = 134 = 1000 0110 BINRIO 7 + 127 = 134 = 1000 0110 BINRIO
EXPOENTE (8 BITS)
0 0
011 0010 0010 0000 0000 0000 011 0010 0010 0000 0000 0000
Abril 2010
15
CODIFICAO --PONTO FLUTUANTE PRECISO SIMPLES CODIFICAO PONTO FLUTUANTE PRECISO SIMPLES
NEGATIVOS NEGATIVOS SS 1 1 11 EXP EXP 0 0 00 FRAO FRAO 0 0 0.XXX 0.XXX QQUER QQUER 00 0.0XX 0.0XX 0.XXX 0.XXX -0 +0 SS 0 0 00 POSITIVOS POSITIVOS EXP EXP 0 0 00 FRAO FRAO 0 0 0.XXX 0.XXX QQUER QQUER 00 0.0XX 0.0XX 0.XXX 0.XXX NaNs - - NORMALS - DENORMALS 0 + NORMALS +
+ DENORMALS
Abril 2010
16
TIPOS DE DADOS SUPORTADOS PELA FPU TIPOS DE DADOS SUPORTADOS PELA FPU
A) PONTO FLUTUANTE A) PONTO FLUTUANTE SINGLE PRECISION (32 BITS) SS EXP EXP FRAO FRAO 0
31 30 DOUBLE PRECISION (64 BITS) EXTENDED PRECISION (80 BITS) S S 63 62 S S 79 78 B) INTEIROS COM SINAL B) INTEIROS COM SINAL EXP EXP J J 64 63 62 EXP EXP 52 51 FRAO FRAO
23 22
FRAO FRAO 0
15 14 SHORT INTEGER SS 31 30 LONG INTEGER SS 63 62 C) BCD (BINARY CODED DECIMAL) 18 DGITOS C) BCD (BINARY CODED DECIMAL) 18 DGITOS S S DGITO DGITO 0 DGITO DGITO 0
XXX D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 XXX D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 72 71 0
79 78
Abril 2010
17
270 270
1.180.591.620.717.411.303.424 1.180.591.620.717.411.303.424
Abril 2010
18
CONTROL CONTROL REGISTER REGISTER STATUS STATUS REGISTER REGISTER TAG TAG REGISTER REGISTER
SELETOR SELETOR 47
SELETOR SELETOR
OPCODE OPCODE
Abril 2010
19
AS EXCEES, QUANDO MASCARADAS, SO TRATADAS AUTOMATICAMENTE PELO HARDWARE AS EXCEES, QUANDO MASCARADAS, SO TRATADAS AUTOMATICAMENTE PELO HARDWARE
Abril 2010
20
FPU BUSY FLAG TOP OF STACK CONDITION CODES ERROR SUMARY STACK FAULT
EXCEPTION FLAGS: PRECISION UNDERFLOW OVERFLOW ZERO DIVIDE DENORMALIZED OPERAND INVALID OPERAND
Abril 2010
21
TAGn INDICA O CONTEDO DO REGISTRADOR Rn DA FPU CONFORME A TABELA ABAIXO: TAGn INDICA O CONTEDO DO REGISTRADOR Rn DA FPU CONFORME A TABELA ABAIXO:
(NaN ,NO TAG == 10 (ESPECIAL) SIGNIFICA INVLIDO NaN,NO SUPORTADO), INFINITO OU DENORMAL TAG 10 (ESPECIAL) SIGNIFICA INVLIDO (NaN,NO SUPORTADO), INFINITO OU DENORMAL (NaN (NaN,NO NaN
Abril 2010
22
; ; ; ; ;
(a) val1 = 5,6 (b) val2 = 2,4 val3 = 3,8 (c) val4 = 10,3 (d)
(d)
13,44 52,58
Abril 2010
23
BARRAMENTO
A UNIDADE DE INTEIROS BUSCA SEQENCIALMENTE AS INSTRUES A EXECUTAR EE A FPU A UNIDADE DE INTEIROS BUSCA SEQENCIALMENTE AS INSTRUES A EXECUTAR A FPU SUPERVISIONA A BUSCA LENDO O BARRAMENTO EM PARALELO SUPERVISIONA A BUSCA LENDO O BARRAMENTO EM PARALELO
INSTRUES PREFIXADAS COM ESC (0D8h AT 0DFh) SO ESPECFICAS DA FPU E SO INSTRUES PREFIXADAS COM ESC (0D8h AT 0DFh) SO ESPECFICAS DA FPU E SO EXECUTADAS POR ELA. AS DEMAIS INSTRUES SO EXECUTADAS PELA UNIDADE DE INTEIROS EXECUTADAS POR ELA. AS DEMAIS INSTRUES SO EXECUTADAS PELA UNIDADE DE INTEIROS
Abril 2010
24
SOLUO: SOLUO:
O REGISTRADOR DE STATUS COPIADO PARA AX COM A INSTRUO FSTSTW AX O REGISTRADOR DE STATUS COPIADO PARA AX COM A INSTRUO FSTSTW AX O CONTEDO DE AH MOVIDO PARA EFLAGS COM A INSTRUO SHAF O CONTEDO DE AH MOVIDO PARA EFLAGS COM A INSTRUO SHAF
CORRESPONDNCIA ENTRE OS FLAGS DA FPU E DA UNIDADE DE INTEIROS: CORRESPONDNCIA ENTRE OS FLAGS DA FPU E DA UNIDADE DE INTEIROS: COND. CODE C0 C1 C2 C3 EFLAGS CARRY NENHUMA PARITY ZERO
Abril 2010
25
CASO A UMA INSTRUO DA FPU CAUSE UMA EXCEO (NO MASCARADA) EE TODAS AS CASO A UMA INSTRUO DA FPU CAUSE UMA EXCEO (NO MASCARADA) TODAS AS INSTRUES SUBSEQENTES FOREM INSTRUES DA UNIDADE DE INTEIROS, ESSA EXCEO INSTRUES SUBSEQENTES FOREM INSTRUES DA UNIDADE DE INTEIROS, ESSA EXCEO FICAR PENDENTE. FICAR PENDENTE.
QUANDO FINALMENTE, APS A EXECUO DE VRIAS INSTRUES DA UNIDADE DE INTEIROS, A QUANDO FINALMENTE, APS A EXECUO DE VRIAS INSTRUES DA UNIDADE DE INTEIROS, A FPU VOLTAR A EXECUTAR UMA NOVA INSTRUO, A EXCEO SER TRATADA. FPU VOLTAR A EXECUTAR UMA NOVA INSTRUO, A EXCEO SER TRATADA.
A ROTINA DE TRATAMENTO DA EXCEO DA FPU PORM PODER NO CONSEGUIR TRATAR A ROTINA DE TRATAMENTO DA EXCEO DA FPU PORM PODER NO CONSEGUIR TRATAR ADEQUADAMENTE A EXCEO, CASO AS INSTRUES EXECUTADAS INTERMEDIARIAMENTE ADEQUADAMENTE A EXCEO, CASO AS INSTRUES EXECUTADAS INTERMEDIARIAMENTE PELA UNIDADE DE INTEIROS TENHAM ALTERADO VALORES NA MEMRIA UTILIZADOS PELA FPU. PELA UNIDADE DE INTEIROS TENHAM ALTERADO VALORES NA MEMRIA UTILIZADOS PELA FPU.
PARA EVITAR ESSE TIPO DE PROBLEMA PODE-SE: PARA EVITAR ESSE TIPO DE PROBLEMA PODE-SE: A) COLOCAR SEMPRE UMA INSTRUO FPU APS INSTRUES QUE PODEM CAUSAR A) COLOCAR SEMPRE UMA INSTRUO FPU APS INSTRUES QUE PODEM CAUSAR EXCEES EXCEES FWAIT APS A INSTRUO FPU QUE PODERIA B) UTILIZAR UMA INSTRUO WAIT / / FWAIT APS A INSTRUO FPU QUE PODERIA B) UTILIZAR UMA INSTRUO WAIT CAUSAR UMA EXCEO. CAUSAR UMA EXCEO.
Abril 2010
26
FILD
count
; ; ; ; ;
Instruo FPU - carrega count para ST(0) supomos acesso proibido - causa exceo. Instruo da unidade inteiros Instruo FPU - excees pendentes sero tratadas aqui
NO EXEMPLO ACIMA, CASO FILD TENHA CAUSADO UMA EXCEO, O TRATAMENTO OCORRER NO EXEMPLO ACIMA, CASO FILD TENHA CAUSADO UMA EXCEO, O TRATAMENTO OCORRER SOMENTE APS A VARIVEL ACESSADA TER SIDO ALTERADA PELA UNIDADE DE INTEIROS, O SOMENTE APS A VARIVEL ACESSADA TER SIDO ALTERADA PELA UNIDADE DE INTEIROS, O QUE PODE IMPOSSIBILITAR A OPERAO CORRETA DA ROTINA DE EXCEO. QUE PODE IMPOSSIBILITAR A OPERAO CORRETA DA ROTINA DE EXCEO.
count
count
; ; ; ; ;
Instruo FPU - carrega count para ST(0) supomos acesso proibido - causa exceo. Instruo FPU - excees pendentes sero tratadas aqui Instruo da unidade inteiros
Abril 2010
27
COMO A FPU EE A UNIDADE DE INTEIROS EVOLUIRAM SEPARADAMENTE COMO UNIDADES COMO A FPU A UNIDADE DE INTEIROS EVOLUIRAM SEPARADAMENTE COMO UNIDADES ISOLADAS, NO H NENHUMA PREVISO DE SALVAMENTO DE DADOS DA FPU NO TSS DA ISOLADAS, NO H NENHUMA PREVISO DE SALVAMENTO DE DADOS DA FPU NO TSS DA TAREFA, QUE GERENCIADO PELA UNIDADE DE INTEIROS. TAREFA, QUE GERENCIADO PELA UNIDADE DE INTEIROS.
A ARQUITETURA IA-32 PORTANTO PREV INSTRUES ESPECFICAS PARA SALVAR E A ARQUITETURA IA-32 PORTANTO PREV INSTRUES ESPECFICAS PARA SALVAR E RESTAURAR O ESTADO DOS REGISTRADORES DA FPU RESTAURAR O ESTADO DOS REGISTRADORES DA FPU
FSTENV ee FLDENV - SALVA / / RESTAURAOS REGISTRADORES DE CONTROLE, STATUS, PONTEIRO FSTENV FLDENV - SALVA RESTAURAOS REGISTRADORES DE CONTROLE, STATUS, PONTEIRO DE DADOS EE INTRUES E OPCODE DE DADOS INTRUES E OPCODE FSAVE ee FRSTOR - - SALVA TODOS OS REGISTRADORES COMO FSTENV ee FLDENV E FSAVE FRSTOR SALVA TODOS OS REGISTRADORES COMO FSTENV FLDENV E ADICIONALMENTE OS 88 REGISTRADORES DE DADOS DA FPU ADICIONALMENTE OS REGISTRADORES DE DADOS DA FPU
ESSAS INSTRUES RECEBEM COMO ARGUMENTO UM PONTEIRO PARA A REA NA MEMRIA ESSAS INSTRUES RECEBEM COMO ARGUMENTO UM PONTEIRO PARA A REA NA MEMRIA ONDE OS DADOS SERO SALVOS. O LAYOUT DESSA REA DEPENDE DO MODO DE OPERAO ONDE OS DADOS SERO SALVOS. O LAYOUT DESSA REA DEPENDE DO MODO DE OPERAO DA CPU EE DO TAMANHO DEFAULT DOS OPERANDOS (16 OU 32 BITS) DA CPU DO TAMANHO DEFAULT DOS OPERANDOS (16 OU 32 BITS)
Abril 2010
28
EXEMPLO DE LAYOUT DA REA DE DADOS DA FPU EXEMPLO DE LAYOUT DA REA DE DADOS DA FPU
EXEMPLO SUPONDO MODO PROTEGIDO EE 32 BITS EXEMPLO SUPONDO MODO PROTEGIDO 32 BITS 31 CONTROL WORD STATUS WORD TAG REGISTER FPU INSTRUCTION POINTER OFFSET 0000 OPCODE INSTR. POINTER SELECTOR 0 0 4 8 12 16 20 24 28
COMO ONEROSO (E MUITAS VEZES DESNECESSRIO) SALVAR E RESTAURAR TODO O COMO ONEROSO (E MUITAS VEZES DESNECESSRIO) SALVAR E RESTAURAR TODO O CONTEXTO DA FPU, OS SISTEMAS OPERACIONAIS MULTITAREFA GERALMENTE UTILIZAM CONTEXTO DA FPU, OS SISTEMAS OPERACIONAIS MULTITAREFA GERALMENTE UTILIZAM ALGUM ARTIFCIO (P. EX FLAG EM EM CR0) PARA DESCOBRIR SE A TAREFA UTILIZA OU NO ALGUM ARTIFCIO (P. EX FLAG EM EM CR0) PARA DESCOBRIR SE A TAREFA UTILIZA OU NO INSTRUES DA FPU, EVITANDO ASSIM SALVAMENTOS DESNECESSRIOS. INSTRUES DA FPU, EVITANDO ASSIM SALVAMENTOS DESNECESSRIOS.
Abril 2010
29
REFERENTE S CODIFICAES DE NMEROS EM PONTO FLUTUANTE, QUAL O REFERENTE S CODIFICAES DE NMEROS EM PONTO FLUTUANTE, QUAL O SIGNFICADO DE: SIGNFICADO DE:
UNNORMALS UNNORMALS
Abril 2010
30