El procesador soporta dos maneras de llamar a procedimientos: las instrucciones CALL y RET, y las instrucciones ENTER y LEAVE (éstas en conjunto con las anteriores).
La pila es un array de posiciones de memoria contiguas; una memoria LIFO (Last In, First Out: cuando se meten datos en la pila, se sacan en orden inverso). Las instrucciones para el manejo de la pila son PUSH para meter items, y POP para sacarlos. Un programa o un sistema operativo puede necesitar muchas pilas, pero está limitado por el número máximo de segmentos y de memoria física disponible. Cuando un sistema posee más de una pila sólo está disponible una (la única contenida en el segmento referido al registro SS), no puede manejar más a la vez.
La instrucción CALL permite llamar fácilmente a procedimientos. Guarda la dirección de la instrucción que se está ejecutando en la pila (con PUSH) para después poder recuperarla y seguir donde estaba, y salta con una instrucción de salto. La instrucción RET hace lo inverso; recupera la posición guardada en la pila (mediante POP) y salta a ella (a la posición de memoria) para seguir con lo que se estaba haciendo antes del procedimiento.
Los parámetros pueden ser pasados entre los procedimientos de tres formas: mediante registros de propósito general (guardando los datos en registros antes de ejecutar CALL), en una lista de argumentos (es un método para pasar un número largo de parámetros, que consiste en guardarlos en una lista de argumentos en uno de los segmentos de datos en memoria; entonces al procedimiento se le pasará un puntero apuntando a esa lista), o mediante la pila.
Existe un mecanismo de protección en la IA que reconoce cuatro nieveles de privilegios (enumerados del 0 al 3, siendo el 0 los de un privilegio mayor). La razón de este mecanismo es aumentar la fiabilidad del sistema operativo. Si ocurren dos interrupciones a la vez, se atenderá primero a la que tenga más privilegios y la otra deberá esperar.
La diferencia entre interrupciones y excepciones es que las interrupciones son asíncronas (pueden ocurrir en cualquier momento, normalmente producido por un dispositivo E/S), y las excepciones son síncronas (las genera el procesador cuando detecta unas condiciones anteriormente predefinidas; se pueden prever). El procesador responde a ambos casos de manera similar, para lo que está haciendo (en el programa principal) y salta a un procedimiento (o subrutina) programado para esa interrupcion o excepción, lo ejecuta y vuelve a saltar donde lo dejó en el programa principal.
La IA soporta un método alternativo para producir llamadas a procedimientos, llamando desde las instrucciones ENTRE y LEAVE. Estas instrucciones crean automáticamente frames de pila para llamar a los procedimientos. Esto tiene dos ventajas: Proporciona soporte de lenguaje máquina para implementar lenguajes estructurados en bloques, como C o Pascal; y simplifica las entradas y salidas de los procedimientos en código generado por el compilador.
Suscribirse a:
Enviar comentarios (Atom)
1 comentario:
la comunicacion es algo que a sido y se convierte cada ves mas en un tema muy importante
tanto para empresas como para personas del comun exactamente con mucha suerte existe muchas facilidades para
hablar muchos minutos y me refiero a comodidad como econimia.
Publicar un comentario