Pasaje de parametros/resultados por stack o lectura/escritura en puertos

Pasaje de parametros/resultados por stack o lectura/escritura en puertos

de Enrique Martin Castro Barrios -
Número de respuestas: 3

Hola,

Bueno basicamente mi duda es lo que dice el asunto, ejemplo.

Leo del puerto entrada el comando cambiar_modo, por lo que la siguiente lectura sobre el puerto entrada corresponde con el parámetro.
Debo leer el parámetro y pushearlo al stack para luego invocar mi subrutina cambiar_modo y popearlo ahi ?
O puedo basicamente leer el parámetro del puerto entrada desde la subrutina cambiar modo ?

Supongamos que se ingresa un parámetro inválido. Debo pushear el resultado al stack y popearlo en mi main o puedo directamente escribir en el puerto de error y no usar el stack ?

En respuesta a Enrique Martin Castro Barrios

Re: Pasaje de parametros/resultados por stack o lectura/escritura en puertos

de Gustavo Brown -

Tenes que compilar lo que hayas escrito en alto nivel.

Si tenes algo asi:

 .... 
   comando = in(PUERTO_ENTRADA);
  if(comando == CAMBIAR_MODO)
     cambiar_modo();
...


void cambiar_modo()
{

   short modo = in(PUERTO_ENTRADA);
  ...
   if(... error de modo..)
   {
          // mando error al log
   }else
   {
    /// veo que modo y cambio de modo
   }
}

en ese caso no tendrías por qué PUSHear nada porque cambiar_modo() no recibe parámetros. Si cambiar modo tampoco retorna resultado entonces tampoco dejarias el resultado en el stack y al detectar el error harías el OUT que indica error y si esta todo ok cambiarias de modo

En resumen, todo depende de cómo hayas escrito el alto nivel. El assembler tiene que ser la compilación del programa de alto nivel

En respuesta a Gustavo Brown

Re: Pasaje de parametros/resultados por stack o lectura/escritura en puertos

de Juan Manuel Rivara De Leon -
Buen día.
¿Es obligatorio pasar los argumentos por stack (o retornar resultados por stack)? Tenía entendido que mientras que la lógica de un procedimiento sea correcta, en principio pasar argumentos o recibir resultados seteando registros era también considerado válido en la programación en assembler.
En caso de que sea obligatorio, agrego otra pregunta relacionada: ¿es obligatorio que los procedimientos conserven registros?
Saludos.
En respuesta a Juan Manuel Rivara De Leon

Re: Pasaje de parametros/resultados por stack o lectura/escritura en puertos

de Federico Rivero -
Hola Juan Manuel!

Es correcto lo que decís. No es obligatorio pasar los parámetros por stack. Lo podrías hacer por registro. Por supuesto que el pasaje de parámetros o devolución de resultados por registro en un procedimiento recursivo se debe hacer con cuidado y probablemente también tengas que usar el stack para preservar contexto, pero sí, el pasaje de parámetros y la devolución de resultados no tiene por qué hacerse por el stack.

Saludos,
Federico