EC-2721
Arquitectura del Computador I!
Universidad Simón BolívarDepartamento de Electrónica y Circuitos
Prof. Juan. C. Regidor
Organización de Computadoras: Un enfoque estructurado,
Andrew Tanenbaum, Pearson Education. Capítulo 4
El nivel ISA
Primera Parte
Compilando Java a IJVM
a) Un fragmento de código en Java.
b) El correspondiente lenguaje ensamblador Java.
c) El programa en IJVM en código hexadecimal.
Elementos de una Instrucción
• Código de operación (Op code)—Hacer esto…
• Referencia a operandos fuente—A esto…
• Referencia a operando resultado—Pon la respuesta aquí…
• Referencia a la siguiente instrucción—Cuando lo termines, sigues con esto otro...
Pilas (1)
SP C3
C2
C1 SP D4 120
LV C0 D3 11C
SP B2 B2 D2 118
B1 B1 D1 114
LV B0 B0 LV D0 110
SP A3 10C A3 A3 A3
A2 108 A2 A2 A2
A1 104 A1 A1 A1
LV A0 100 A0 A0 A0
Uso de la pila para almacenar variables locales.
a) Mientras A está activo.
b) Después que A llama a B.
c) Después que B llama a C.
d) Después que C y B retornan y A llama a D.
Pilas (2)
Uso de una pila de operandos para realizar un cálculo aritmético
a) Se mete la variable a2 en la pila
b) Se mete la variable a3 en la pila
c) Suma
d) Se guarda el tope de la pila en la variable a1
El Modelo de Memoria de IJVM
A
é
CalcularDirección
Instrucción
Buscar instrucción
Búsqueda de
operandos
Decodificación de instrucción
Cálculo Dirección
Operandos
Operación sobre datos
Cálculo dirección
operandos
Almacenar Resultado
Múltiples Operandos
MúltiplesResultados
Instrucción Completa,Buscar próxima instrucción
Diagrama de estados del Ciclo de Instrucción Conjunto de Instrucciones de IJVM (1)
Conjunto de instrucciones de IJVMLos operandos byte, const, y numvar son de 1 byte.
Los operandos despl, indice y offset son de 2 bytes.
Compilando Java a IJVM (1)
a) Un fragmento de código en Java.
b) El correspondiente lenguaje ensamblador Java.
c) El programa en IJVM en código hexadecimal.
Compilando Java a IJVM (2)
Tope de la pila después de cada instrucción de la lámina anterior.
ILOAD j ILOAD k IADD ISTORE i ILOAD i BIPUSH 3 IF_ICMPEQ L1
ILOAD j BIPUSH 1 ISUB ISTORE j GOTO L2 BIPUSH 0 ISTORE k
Implementación de IJVM usando Mic-1 (1)
El microprograma para Mic-1
Implementación de IJVM usando Mic-1(2)
El microprograma para Mic-1
Implementación de IJVM usando Mic-1(3)
El microprograma para Mic-1
Implementación de IJVM usando Mic-1(4)
El microprograma para Mic-1
Implementación de IJVM usando Mic-1(5)
El microprograma para Mic-1
Implementación de IJVM usando Mic-1(6)
Formato de instrucción BIPUSH
a) ILOAD con un índice de 1-byte.
b) WIDE ILOAD con un índice de 2 bytes.
Implementación de IJVM usando Mic-1(7)
La secuencia inicial para
ILOAD y WIDE ILOAD.
Las direcciones son ejemplos.
Implementación de IJVM usando Mic-1(8)
La instrucción IINC tiene dos campos de operandos distintos.
Implementación de IJVM usando Mic-1(9)
La situación al inicio de diversas microinstrucciones:
a) Main1. b) goto1. c) goto2. d) goto3. e) goto4.
Efecto de INVOKEVIRTUAL
a) Memoria antes de ejecutar INVOKEVIRTUAL.
b) Después de ejecutarlo.
Efecto de IRETURN
a) Memoria antes de ejecutar IRETURN.
b) Después de ejecutarlo.
Top Related