Dudas en la programación

Dudas en la programación

de Crhistyan German Silva Perdomo -
Número de respuestas: 1

Buenas,

Estoy intentando generalizar ideas sobre este tema, por lo que quisiera verificar si estoy encarando bien los problemas y contestar algunas dudas. Para interrupciones en alto nivel se cuenta con las funciones enable() y disable(), estas son usadas en el main, las dudas son las siguientes:

1) Tenía entendido que como primer paso en el main se hace un disable() para deshabilitar las interrupciones ya que se va a inicializar las variables que corresponde y demás para poder usarlas, y luego de hecho esto habilitarlas. ¿es correcto esto?, porque no lo he visto así en las soluciones de los exámenes. 

2) En algunas soluciones se pone como comentario "//Instalar interrupciones", mientras que en otras soluciones encuentro "instalarInterrupciones()", ¿A que corresponde esta "etapa" del main? y ¿El comentario viene a dar la idea de que en ese paso de debe instalar las interrupciones, es decir, es lo mismo poner el comentario o ponerlo como si fuera una función?

3) Al utilizar la instrucción OUT para modificar, por ejemplo, el bit 0 de un determinado lugar de memoria, he encontrado soluciones donde se escribe OUT(lugar, IN(lugar) | 01H) mientras que en otras modifican directamente el lugar poniendo OUT(lugar, 01H) ¿no hay problema con modificar todo el lugar o se debería tener el cuidado de modificar únicamente ese bit?

En respuesta a Crhistyan German Silva Perdomo

Re: Dudas en la programación

de Federico Rivero -

Estimado:

1) Tenía entendido que como primer paso en el main se hace un disable() para deshabilitar las interrupciones ya que se va a inicializar las variables que corresponde y demás para poder usarlas, y luego de hecho esto habilitarlas. ¿es correcto esto?, porque no lo he visto así en las soluciones de los exámenes. 

Es correcto. A veces lo que hacemos es que como el sistema inicia con las interrupciones deshabilitadas, si el problema trata de una máquina dedicada, asumimos que nadie habilitó las interrupciones aún (porque nosotros escribimos el main) y nos ahorramos el disable, pero nunca está mal ponerlo. Es obligatorio ponerlo cuando se trata de una máquina no dedicada. 

2) En algunas soluciones se pone como comentario "//Instalar interrupciones", mientras que en otras soluciones encuentro "instalarInterrupciones()", ¿A que corresponde esta "etapa" del main? y ¿El comentario viene a dar la idea de que en ese paso de debe instalar las interrupciones, es decir, es lo mismo poner el comentario o ponerlo como si fuera una función?

La instalación de interrupciones consiste en cargar las estructuras de datos del sistema de interrupciones. En general lo ponemos como comentario, pero es lo mismo, sí.

3) Al utilizar la instrucción OUT para modificar, por ejemplo, el bit 0 de un determinado lugar de memoria, he encontrado soluciones donde se escribe OUT(lugar, IN(lugar) | 01H) mientras que en otras modifican directamente el lugar poniendo OUT(lugar, 01H) ¿no hay problema con modificar todo el lugar o se debería tener el cuidado de modificar únicamente ese bit?

Depende del registro. Si es un registro de lectura y escritura, lo correcto es modificar únicamente los bits que queremos (porque en general no sabemos el uso de los demás bits). Si el bit es de solo escritura y no sabemos el valor del registro, no tenemos otra que escribir con algo el resto de los bits.

Saludos,

       Federico