Академический Документы
Профессиональный Документы
Культура Документы
Pgina 1
Representacin de Flotantes
-12 en formato binario: -1100 Normalizando: -1.100 x 2 ^3 Exponente + offset binario = 3 + 127 = 130
11000001010000000000000000000000
Pgina 2
Representacin de Flotantes
-12 en formato binario: -1100 Normalizando: -1.100 x 2 ^3 Exponente + factor de polarizacin = 3 + 127 = 130
11000001010000000000000000000000
Pgina 3
Representacin de Flotantes
Cdigo Autogenerado
Pgina 4
Pgina 5
ST(0)
push 4
Pgina 6
4
6
Pgina 7
24
ST(0)
Pgina 8
24
4
Pgina 9
20
ST(0)
Pgina 10
m80
st(1)st(n) m16 int
FILD operando
FLD1 FLDZ
Pgina 11
Pgina 12
Pgina 13
Intercambio de Registros
FXCH st(n)
Pgina 14
Suma FADD
FADD
Suma st(0) y st(1) guardado en st(0) Suma m32 a st(0) resultado almacenado en st(0) Suma m64 a st(0) resultado almacenado en st(0) Suma st(0) a st(i) resultado almacenado en st(0)
FADD m32flotante FADD m64flotante FADD st(0), st(i) FADD st(i), st(0)
Pgina 15
Suma FADDP
Pgina 16
Suma FIADD
m32 (entero) FIADD operando m16 (entero) Suma y los operandos y el resultado lo almacena en st(0)
Pgina 17
RESTA FSUB
FSUB
FSUB operando
m64 (flotante) st(0) = st(1) m64 st(0) = st(0) st(i) st(i) = st(i) st(0)
Pgina 18
FSUBR
FSUBR operando
m64 (flotante) st(0) = m64f st(0) st(0) = st(i) st(0) st(i) = st(0) st(i)
Pgina 19
FSUBP ST(i),ST(0)
Pgina 20
FSUBRP ST(i),ST(0)
Pgina 21
Pgina 22
Pgina 23
Producto FMUL
FMUL
st(i) * st(0)
ST(i) = st(i)*st(0)
Pgina 24
Pgina 25
m16 (int) st(0) = m16i * st(0) FIMUL m32 (int) st(0) = m32i * st(0)
Pgina 26
FDIV
ST(1) = st(1)/st(0) ST(0) = st(0)/m32fp ST(0) = st(0)/m64fp ST(0) = st(0)/st(i) ST(i) = st(i)/st(0)
Pgina 27
FDIVR
FD IVR FD IVR m32fp FD IVR m64fp FD IVR st(0), st(i) FD IVR st(i), st(0)
ST(0) = st(0)/st(1) ST(0) = m32fp/st(0) ST(0) = m64fp/st(0) ST(0) = st(i)/st(0) ST(i) = st(0)/st(i)
Pgina 28
FDIVRP
(inversa y extraccin)
Pgina 29
FIDIV
Pgina 30
Pgina 31
ATOF K&R
Salta espacios frontales
1 3 . 5 4
Pgina 32
ATOF K&R
Salta espacios frontales
1 3 . 5 4
i=3 potencia=
valor=
signo=
Pgina 33
ATOF K&R
Verifica signo
1 3 . 5 4
i=3 potencia=
valor=
signo= 1
Pgina 34
ATOF K&R
Salta el signo si es que existe
1 3 . 5 4
i=3 potencia=
valor=
signo= 1
Pgina 35
ATOF K&R
Ciclo para verificar dgitos
1 3 . 5 4
i=3 potencia=
valor=0
signo= 1
Pgina 36
ATOF K&R
Ciclo para verificar dgitos
1 3 . 5 4
i=3
valor=10.0*0+ascii(1)-ascii(0) =1
potencia=
signo= 1
Pgina 37
ATOF K&R
Ciclo para verificar dgitos
1 3 . 5 4
i=4
valor=10.0*1+ascii(3)-ascii(0) =13
potencia=
signo= 1
Pgina 38
ATOF K&R
Verifica el punto decimal
1 3 . 5 4
i=5 potencia=
Valor=13
signo= 1
Pgina 39
ATOF K&R
Verifica el punto decimal
1 3 . 5 4
i=6 potencia=
Valor=13
signo= 1
Pgina 40
ATOF K&R
Ciclo para dgitos despus del punto decimal
1 3 . 5 4
i=6 potencia=1.0
Valor=13
signo= 1
Pgina 41
ATOF K&R
Ciclo para dgitos despus del punto decimal
1 3 . 5 4
i=6
Valor=10*13+ascii(5)-ascii(0) =135
potencia=1.0
signo= 1
Pgina 42
ATOF K&R
Ciclo para dgitos despus del punto decimal
1 3 . 5 4
i=6 potencia=10
Valor=135
signo= 1
Pgina 43
ATOF K&R
Ciclo para dgitos despus del punto decimal
1 3 . 5 4
i=7
Valor=10*135+ascii(4)-ascii(0) =1354
potencia=10
signo= 1
Pgina 44
ATOF K&R
Ciclo para dgitos despus del punto decimal
1 3 . 5 4
i=7 potencia=100
Valor=1354
signo= 1
Pgina 45
ATOF K&R
Regresa el clculo del nmero
1 3 . 5 4
i=8 potencia=100
Valor=1354
signo= 1
return 1*1354/100
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 46
3 + 1023 = 1026
0100000000101000000000000000000000000000000000000000000000000000 4 0 2 8 0 0 0 0 0 0 0 0 0 0 0 0
1076363264
Jos Luis Carreo Arteaga Programacin de bajo nivel
0
Pgina 47
Pgina 48
Almacenar los dobles en 64 bits Cargar el nmero de 64 bits en st(0) Regresar el valor a la variable
4(%esp) | 8(%esp)
Pgina 49
Pgina 50
Pgina 51
Construyendo biblioteca b60.s para manipulacin de dobles Actividad 8.1 Programa p60.c Programa b60.s parte I
Pgina 52
Pgina 53
Pgina 54
i=0;
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 55
Eax= *(s+i)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 56
Pgina 57
Salta a etiqueta B
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 59
Incrementa i
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 64
Asignar -1 a signo
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 67
Eax = *(s+i)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 70
Ajusta *(s+i) en %eax y carga el carcter en el registro al y los bits altos los rellena con 0
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 71
Compara *(s+i) el cual se encuentra en el registro al con el ascii 43 (ascii del signo +)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 72
Compara *(s+i) el cual se encuentra en el registro al con el ascii 45 (ascii del signo -)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 74
0
Guarda cero en la pila de FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0)
Pgina 78
ST(0)
Extrae cero de la pila de FPU y lo coloca en la variable valor -8(%ebp)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 79
ST(0)
Guarda *(s+i) en eax
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 80
ST(0)
Ajusta *(s+i) en al y los bits ms altos los rellena con cero
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 81
ST(0)
Compara *(s+i) con el ascii 48 (ascii del 0)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 82
ST(0)
Compara *(s+i) con el ascii 57 (nmero 9)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 83
ST(0)
Si es mayor se va a etiqueta salir_ciclo2
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 84
valor
Carga valoren la pila del FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 85
10 valor
Carga la constante entera 10 en la pila del FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 86
10*valor
Multiplica valor por 10
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 87
10*valor
Guarda la direccin de s en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 88
10*valor
A la direccin de s le suma i
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 89
10*valor
Guarda el contenido de eax en eax y la ajusta al registro al
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 90
10*valor
Mueve el registro al ajustado al registro %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 91
10*valor
Resta el valor ascii 48 (ascii de 0) al valor contenido en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 92
10*valor
Almacena el valor calculado en la variable temporal -36(%ebp)
Jos Luis Carreo Arteaga Programacin de bajo nivel
ST(0) ST(1)
Pgina 93
36(%ebp)=*(s+i)-0
ST(0) ST(1)
10*valor
El valor calculado almacenado en 36(%ebp) es guardado en la pila FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel
Pgina 94
ST(1)
Suma los dos valores contenidos en la pila del FPU= 10*valor + (*(s+i)-0)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 95
ST(0) ST(1)
Extrae el valor del clculo y lo guarda en la variable valor
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 96
ST(0) ST(1)
Incrementa el valor de i
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 97
ST(0) ST(1)
Contina al siguiente ciclo
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 98
ST(0) ST(1)
Guarda i en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 99
ST(0) ST(1)
A i le suma la direccin de s y almacena el resultado en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 100
ST(0) ST(1)
El contenido de %eax lo guarda en eax y ajusta el resultado al registro %al
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 101
ST(0) ST(1)
Compara el contenido de al con el ascii 46 (ascii del punto)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 102
ST(0) ST(1)
Si no es igual ir a etiqueta ciclo3
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 103
ST(0) ST(1)
Incrementa el valor de i
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 104
Pgina 105
Actividad 8.1
Completar el anlisis lnea por lnea del algoritmo anterior
Pgina 106
Referencias
[Irvine, Kip R.]Assembly Language for X86 Processors. 2011. ISBN 0-13-602212-X [Kernighan, Brian W; Ritchie, Dennis M] The C programming language. Second Edition. April 1, 1988. ISBN-10: 0131103628
Pgina 107