1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y...

29
1 Uso de una CALL GATE Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco Machío

Transcript of 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y...

Page 1: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

1

Uso de una CALL GATE

• Uso de una CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 2: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

2

La tarea en curso va a ejecutar la instrucción CALL

0017:1234H

Se conoce el contenido de los registros:

También se dispone de un volcado de diferentes

zonas de memoria:

La tarea en curso va a ejecutar la instrucción CALL

0017:1234H

Se conoce el contenido de los registros:

También se dispone de un volcado de diferentes

zonas de memoria:

Ejemplo de uso de una CALL GATE

4528HLDTR

0050000FFFHGDTR

000EHSS

0006HCS

00008206000003FFFH

CPL = 24A80HSP

3785HIP

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 3: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

3

Ejemplo de uso de una CALL GATE

Volcado de memoria:

Se pide detallar todas las cargas de registro de segmento que se produzcan y reflejar el estado de la pila actual y al entrar a la subrutina.

Volcado de memoria:

Se pide detallar todas las cargas de registro de segmento que se produzcan y reflejar el estado de la pila actual y al entrar a la subrutina.

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 4: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

4

CALL 0017:1234HCALL 0017:1234H

Ejemplo de uso de una CALL GATE

RPL = 3

TI = 1 ; LDT

Indice = 2

0000 0000 0001 0111

Selector

Descriptor

Tabla de descriptores

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 5: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

5

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Offset = Indice * 8 = 2 * 8 = 10H

4528HLDTR 00008206000003FFFH

Dir. Base LDT = 60000H

Dir. Física descriptor = Dir. Base LDT + offset = 60010H

OK

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 6: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

6

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Tipo = CALL GATEDescriptor = 00 00 E4 03 00 40 34 56 H

Offset = 3456 H D.A. = 1110 01002/3 = 0 (16 bits)

GATE DPL = 3P=1WORD COUNT = 3

Selector = 40 H

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 7: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

7

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Tipo = CALL GATEDescriptor = 00 00 E4 03 00 40 34 56 H

Offset = 3456 H D.A. = 1110 01002/3 = 0 (16 bits)

GATE DPL = 3P=1DWORD COUNT = 3

Selector = 40 H

OK

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 8: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

8

Ejemplo de uso de una CALL GATELocalizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Tipo = CALL GATEDescriptor = 00 00 E4 03 00 40 34 56 H2/3 = 0 (16 bits)

GATE DPL = 3P=1

OK

EPL = MAX (CPL, RPL)

EPL = MAX (2, 3)

EPL = 3

CALL 0017:1234HCS = 6

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

OK

Page 9: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

9

Ejemplo de uso de una CALL GATELlamada a través de la CALL GATELlamada a través de la CALL GATE

Call gatecon instr.

CALL

Sgte. paso

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 10: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

10

Localizar el descriptor de segmento de código.Localizar el descriptor de segmento de código.

Ejemplo de uso de una CALL GATE

0000 0000 0100 0000

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Descriptor GATE = 00 00 E4 03 00 40 34 56 H

Selector = 40 H

RPL = 0, pero no se usa [3]

TI = 0 ; GDT

Indice = 8

Page 11: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

11

Localizar el descriptor de segmento de código.Localizar el descriptor de segmento de código.

Ejemplo de uso de una CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Offset = Indice * 8 = 8 * 8 = 40H

Dir. Física descriptor = Dir. Base GDT + offset = 5040H

0050000FFFHGDTR

Dir. Base GDT = 5000H

OK

Page 12: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

12

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Tipo = Segm.CódigoDescriptor = 07 00 98 54 38 80 1F F5 H

Dir. Base = 07543880 H D.A. = 10011000C = 0 (No conforme)

R = 0 (No legible)A = 0 (Accedido)Gr. =0

Def. = 0 (Tarea 16 bits)

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Segm. DPL = 0P = 1Límite = 1FF5H

Page 13: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

13

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Tipo = Segm.CódigoDescriptor = 07 00 98 54 38 80 1F F5 H

Dir. Base = 07543880 H D.A. = 10011000C = 0 (No conforme)

R = 0 (No legible)A = 0 (Accedido)Gr. =0

Def. = 0 (Tarea 16 bits)

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Segm. DPL = 0P = 1Límite = 1FF5H

OK

Page 14: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

14

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Tipo = Segm.CódigoDescriptor = 07 00 98 54 38 80 1F F5 H

C = 0 (No conforme)

R = 0 (No legible)A = 0 (Accedido)

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Segm. DPL = 0P = 1

CPL = 2

CS = 6

OKOKCPL Cambia

Page 15: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

15

Ejemplo de uso de una CALL GATELlamada a través de la CALL GATELlamada a través de la CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Cambiar de pila

Call gatecon instr. CALL y

cambio de CPL

Page 16: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

16

Leer del TSS los valores de SS y SP para el nuevo CPL.Leer del TSS los valores de SS y SP para el nuevo CPL.

Ejemplo de uso de una CALL GATE

0000 0000 0011 1000

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

SP0 2F42 H

RPL = 0

TI = 0 ; GDT

Indice = 7

SS0 0038 H

TSS (Task Status Segment)

Selector = 38 H

Page 17: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

17

Localizar el descriptor de segmento de código.Localizar el descriptor de segmento de código.

Ejemplo de uso de una CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Offset = Indice * 8 = 7 * 8 = 38HDir. Base GDT = 5000H

Dir. Física descriptor = Dir. Base GDT + offset = 5038H

0050000FFFHGDTR

OK

Page 18: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

18

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Tipo = Segm.DatosDescriptor = 00 00 92 01 01 00 2F FF H

Dir. Base = 00010100 H D.A. = 10010010ED = 0 (Normal)

W = 1 (Escribibl

e)A = 0 (No accedido)Gr. =0

Big = 0 (Pila de 16 bits)

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Segm. DPL = 0P = 1Límite = 2FFFH

Page 19: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

19

Localizar y leer el descriptor [10]Localizar y leer el descriptor [10]

OK

Ejemplo de uso de una CALL GATE

Tipo = Segm.DatosDescriptor = 00 00 92 01 01 00 2F FF H

Dir. Base = 00010100 H D.A. = 10010010ED = 0 (Normal)

W = 1 (Escribible)

A = 0 (No accedido)Gr. =0Big = 0 (Pila de 16 bits)

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Segm. DPL = 0P = 1Límite = 2FFFH

Page 20: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

20

Localizar y leer el descriptor [10]Localizar y leer el descriptor [10]

Ejemplo de uso de una CALL GATE

Tipo = Segm.DatosDescriptor = 00 00 92 01 01 00 2F FF H

ED = 0 (Normal)

W = 1 (Escribible)

A = 0 (No accedido)

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Segm. DPL = 0P = 1

OK

Nuevo CPL = 0

RPL = 0

SS0 0038 H

OK

Page 21: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

21

Ejemplo de uso de una CALL GATE

Dirección de memoria apuntada por el nuevo puntero de pila:Dirección de memoria apuntada por el nuevo puntero de pila:

00 00 92 01 01 00 2F FF H

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Dir. Base = 00010100 H SP = 2F42H

Ptro. Pila = Dir. Base + Offset = 00010100H + 2F42H = 13042H

SP = 2F42 H

SS = 0038 H

Page 22: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

22

Ejemplo de uso de una CALL GATELlamada a través de la CALL GATELlamada a través de la CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Almacenar datos en la nueva pila

Call gatecon instr. CALL y

cambio de CPL

Page 23: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

23

Calcular dirección de memoria de la pila anteriorCalcular dirección de memoria de la pila anterior

Ejemplo de uso de una CALL GATE

0000 0000 0000 1110

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

SPant

4A80 H

RPL = 2

TI = 1 ; LDT

Indice = 1

SSant

000E H

TSS (Task Status Segment)

Selector = 0E H

Page 24: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

24

Ejemplo de uso de una CALL GATE

Localizar y leer un descriptor [10]Localizar y leer un descriptor [10]

Offset = Indice * 8 = 1 * 8 = 8

4528HLDTR 00008206000003FFFH

Dir. Base LDT = 60000H

Dir. Física descriptor = Dir. Base LDT + offset = 60008H

OK

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Page 25: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

25

Ejemplo de uso de una CALL GATE

Localizar y leer el descriptor [10]Como el descriptor estaba cargado en SS sabemos que cumplía todas las reglas. Sólo nos interesa su Dir. Base.

Localizar y leer el descriptor [10]Como el descriptor estaba cargado en SS sabemos que cumplía todas las reglas. Sólo nos interesa su Dir. Base.

Descriptor = 00 00 92 06 B0 00 2F FF H

Dir. Base = 0006B000 H

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

SPant = 1A80H

Ptro. Pilaant = Dir. Base + Offset = 0006B000H + 1A80H = 6CA80H

Page 26: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

26

Localizar y leer el contenido de la pila anteriorComo el descriptor de la CALL GATE el bit 2/3 = 0 (16 bits) y WORD COUNT = 3, tenemos almacenadas tres words en la antigua pila.

Localizar y leer el contenido de la pila anteriorComo el descriptor de la CALL GATE el bit 2/3 = 0 (16 bits) y WORD COUNT = 3, tenemos almacenadas tres words en la antigua pila.

Ejemplo de uso de una CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Ptro. Pilaant= 6CA80H

45H

27H

2AH

33H

FFH

78H

Page 27: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

27

Almacenar información en la nueva pilaAlmacenar información en la nueva pila

Ptro. Pila =

Ejemplo de uso de una CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

45H

27H

2AH

33H

FFH

78H

Ptro. Pilaant

06

00

80

4A85

37

45H

27H

2AH

33H

FFH

78H

13042H

0F

00

SPant

4A80 HSSant

000F H000F H

4A80 H

CS

IP0006 H

3785 H

0006 H

3785 H

13040H1303EH13038H13036H13034HSSant

SPant

Parám.

CS

IP

Page 28: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

28

Ejemplo de uso de una CALL GATELlamada a través de la CALL GATELlamada a través de la CALL GATE

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Cargar los nuevos

valores de CS e IP

Call gatecon instr. CALL y

cambio de CPL

Page 29: 1 Uso de una CALL GATE Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco.

29

Ejemplo de uso de una CALL GATELlamada a través de la CAL GATE

instrucción CALL 0017:1234HLlamada a través de la CAL GATE

instrucción CALL 0017:1234H

Universidad Pontificia de Salamanca (Madrid)Dpto. de Electrónica y Comunicaciones.

© Alfonso Alejandre, Luis Azorín y Francisco Machío

Descriptor segm. Código = 07 00 98 54 38 80 1F F5 H

Descriptor CALL GATE = 00 00 E4 03 00 40 34 56 H

07 00 98 54 38 80 1F F5 HCS =

0040 H 3456HIP =