miércoles, enero 04, 2006

El principio de los programas en C

Despues de mucho preguntarme y analizar el lenguaje de programacion C, me di cuenta que era muy simple y sencillo, pocas reglas etc... lo mejor es el programa que no hace nada, una simple funcion main y listo... tienes tu primer programa, y como C es un lenguaje cercano a la maquina y todo ese cuento pues debe ser un programa pequeno, pero me di cuenta que no fue asi... tenia metido dentro de su codigo 2 grandes secciones que no le cuentan a uno que estan alli, la primera es el segmento _start y el segundo son las libc, bueno... con gcc solo es cuestion de usar -nostartfiles y -nostdlib y listo las quitamos... pero mi lindo programa hace nada queda hecho papilla y no compila... solucion... mas o menos facil.

Todo es cuestion de crear otra funcion llamada _start y en esta llamar el main... y voila... compila pero no ejecuta... lo siguiente que tienes que hacer es que el programa termine... eso es mas sencillo aun... simplemente tienes que llamas a la interrucion 80 con el codigo en eax de 1 que es la funcion exit para procesos en el sistema operativo linux y con el valor de ebx del retorno de la funcion.

Asi he logrado un programa de 150 bytes... se que se puede reducir hasta un nivel de 45 bytes... pero hecho a mano desde el archivo elf, pero esto me ayuda para saber donde empieza y termina C.

No hay comentarios.: