1 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
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 4528H LDTR FFFH GDTR 000EH SS 0006H CS FFFH CPL = 2 4A80H SP 3785H IP Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco Machío
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
4 CALL 0017:1234H Ejemplo de uso de una CALL GATE RPL = 3TI = 1 ; LDT Indice = 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
5 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Offset = Indice * 8 = 2 * 8 = 10H 4528H LDTR FFFH 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
6 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Tipo = CALL GATE Descriptor = E H Offset = 3456 H D.A. = /3 = 0 (16 bits) GATE DPL = 3 P=1 WORD 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
7 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Tipo = CALL GATE Descriptor = E H Offset = 3456 H D.A. = /3 = 0 (16 bits) GATE DPL = 3 P=1 DWORD 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
8 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Tipo = CALL GATEDescriptor = E H 2/3 = 0 (16 bits) GATE DPL = 3 P=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
9 Ejemplo de uso de una CALL GATE Llamada a través de la CALL GATE Call gate con instr. CALL Sgte. paso Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco Machío
10 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 Descriptor GATE = E H Selector = 40 H RPL = 0, pero no se usa [3] TI = 0 ; GDT Indice = 8
11 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 FFFH GDTR Dir. Base GDT = 5000H OK
12 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Tipo = Segm.Código Descriptor = F F5 H Dir. Base = H D.A. = C = 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 = 0 P = 1 Límite = 1FF5H
13 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Tipo = Segm.Código Descriptor = F F5 H Dir. Base = H D.A. = C = 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 = 0 P = 1 Límite = 1FF5H OK
14 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Tipo = Segm.Código Descriptor = F 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 = 0 P = 1 CPL = 2 CS = 6 OK CPL Cambia
15 Ejemplo de uso de una CALL GATE Llamada 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 gate con instr. CALL y cambio de CPL
16 Leer del TSS los valores de SS y SP para el nuevo CPL. 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 SP 0 2F42 H RPL = 0TI = 0 ; GDT Indice = 7 SS H TSS (Task Status Segment) Selector = 38 H
17 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 FFFH GDTR OK
18 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Tipo = Segm.Datos Descriptor = F FF H Dir. Base = H D.A. = ED = 0 (Normal) W = 1 (Escribible) 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 = 0 P = 1 Límite = 2FFFH
19 Localizar y leer el descriptor [10] OK Ejemplo de uso de una CALL GATE Tipo = Segm.Datos Descriptor = F FF H Dir. Base = H D.A. = ED = 0 (Normal) W = 1 (Escribible) 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 = 0 P = 1 Límite = 2FFFH
20 Localizar y leer el descriptor [10] Ejemplo de uso de una CALL GATE Tipo = Segm.Datos Descriptor = F 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 = 0 P = 1 OK Nuevo CPL = 0 RPL = 0 SS H OK
21 Ejemplo de uso de una CALL GATE Dirección de memoria apuntada por el nuevo puntero de pila: F FF H Universidad Pontificia de Salamanca (Madrid) Dpto. de Electrónica y Comunicaciones. © Alfonso Alejandre, Luis Azorín y Francisco Machío Dir. Base = HSP = 2F42H Ptro. Pila = Dir. Base + Offset = H + 2F42H = 13042H SP = 2F42 H SS = 0038 H
22 Ejemplo de uso de una CALL GATE Llamada 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 gate con instr. CALL y cambio de CPL
23 Calcular dirección de memoria de la pila anterior 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 SP ant 4A80 H RPL = 2TI = 1 ; LDT Indice = 1 SS ant 000E H TSS (Task Status Segment) Selector = 0E H
24 Ejemplo de uso de una CALL GATE Localizar y leer un descriptor [10] Offset = Indice * 8 = 1 * 8 = H LDTR FFFH 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
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 = 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 SP ant = 1A80H Ptro. Pila ant = Dir. Base + Offset = 0006B000H + 1A80H = 6CA80H
26 Localizar y leer el contenido de la pila anterior Como 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 anterior Como 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. Pila ant = 6CA80H 45H 27H 2AH 33H FFH 78H
27 Almacenar 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. Pila ant A H 27H 2AH 33H FFH 78H 13042H 0F 00 SP ant 4A80 H SS ant 000F H 4A80 H CS IP 0006 H 3785 H 0006 H 3785 H 13040H 1303EH 13038H 13036H 13034H SS ant SP ant Parám. CS IP
28 Ejemplo de uso de una CALL GATE Llamada 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 gate con instr. CALL y cambio de CPL
29 Ejemplo de uso de una CALL GATE Llamada a través de la CAL GATE instrucción CALL 0017:1234H Llamada 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 = F F5 H Descriptor CALL GATE = E H F F5 H CS = 0040 H 3456H IP =