Compilando Java a IJVM El nivel ISA Primera...

6
EC-2721 Arquitectura del Computador I Universidad Simón Bolívar Departamento 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.

Transcript of Compilando Java a IJVM El nivel ISA Primera...

Page 1: Compilando Java a IJVM El nivel ISA Primera Parteprof.usb.ve/jregidor/cursos/ec2721/pdfs/2_EC2721_MIC1... · 2012. 1. 17. · Compilando Java a IJVM (1) a) Un fragmento de código

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.

Page 2: Compilando Java a IJVM El nivel ISA Primera Parteprof.usb.ve/jregidor/cursos/ec2721/pdfs/2_EC2721_MIC1... · 2012. 1. 17. · Compilando Java a IJVM (1) a) Un fragmento de código

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.

Page 3: Compilando Java a IJVM El nivel ISA Primera Parteprof.usb.ve/jregidor/cursos/ec2721/pdfs/2_EC2721_MIC1... · 2012. 1. 17. · Compilando Java a IJVM (1) a) Un fragmento de código

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

Page 4: Compilando Java a IJVM El nivel ISA Primera Parteprof.usb.ve/jregidor/cursos/ec2721/pdfs/2_EC2721_MIC1... · 2012. 1. 17. · Compilando Java a IJVM (1) a) Un fragmento de código

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.

Page 5: Compilando Java a IJVM El nivel ISA Primera Parteprof.usb.ve/jregidor/cursos/ec2721/pdfs/2_EC2721_MIC1... · 2012. 1. 17. · Compilando Java a IJVM (1) a) Un fragmento de código

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.

Page 6: Compilando Java a IJVM El nivel ISA Primera Parteprof.usb.ve/jregidor/cursos/ec2721/pdfs/2_EC2721_MIC1... · 2012. 1. 17. · Compilando Java a IJVM (1) a) Un fragmento de código

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.