SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: bob esponja en Viernes 20 de Enero de 2006, 08:55

Título: Paso De Parametros A Programas
Publicado por: bob esponja en Viernes 20 de Enero de 2006, 08:55
no soy de programar mucho en ensamblador ( ahora si pero antes no ), como el sistema de archivos esta casi terminado, ahora que tengo que crear programas para que interactuen con el sistema de archivos me viene el problema de como pasarle los parametros al programa.

por ejemplo
rm archivo

separo el string, llamo a rm y como le paso el argumento "archivo" y el numero de argumentos ( seria como argc y ** argv ) al programa? por la pila? con una direccion de memoria? no seria eso peligroso?.

gracias...
Título: Re: Paso De Parametros A Programas
Publicado por: Eternal Idol en Viernes 20 de Enero de 2006, 10:07
Windows obtiene un puntero desde una direccion especifica (GetCommandLineA/W). Podrias hacer una estructura de proceso (fija) en la que uno de los campos sea un puntero al command line.
Título: Re: Paso De Parametros A Programas
Publicado por: bob esponja en Viernes 20 de Enero de 2006, 19:26
la estructura de proceso iria en el espacio de memoria del kernel? o del programa?
si esta en el espacio de memoria del kernel no seria medio peligroso?
Título: Re: Paso De Parametros A Programas
Publicado por: Eternal Idol en Viernes 20 de Enero de 2006, 20:43
¿No es el S.O. de modo real (16 bits)?
Título: Re: Paso De Parametros A Programas
Publicado por: bob esponja en Sábado 21 de Enero de 2006, 03:28
si por?

ya se que el hecho de que sea en 16 bits lo hace un desastre pero dentro del desastre quiero hacer las cosas bien
Título: Re: Paso De Parametros A Programas
Publicado por: bob esponja en Sábado 21 de Enero de 2006, 09:51
cuando hablaba de espacio de memoria me referia al segmento de memoria  :D lo que pasa que tiendo a inventar palabras para expresar lo que ya tiene nombre..  :P

ya hice eso, los programas reciben los parametros (el string que llamo a el programa esta almcenado en el segmento del kernel  :o ) y los parsean con una funcion llamada getToken que les devuelve uno a uno los tokens de la llamada.
Título: Re: Paso De Parametros A Programas
Publicado por: Eternal Idol en Sábado 21 de Enero de 2006, 10:08
No era eso a lo que iba sino que no tenes ningun tipo de proteccion sobre la memoria que yo sepa. Se podria llegar a sobreescribir la memoria del Kernel tranquilamente.

Te recomiendo que busques informacion sobre el PSP (Program Segment Prefix) de MS-DOS que entre otras cosas incluye la linea de comandos.