Duda de asm y c

Iniciado por roller0, 16 Noviembre 2010, 17:57 PM

0 Miembros y 1 Visitante están viendo este tema.

roller0

muy buenas tardes

la verdad, tengo un problema con un peque;o kernel que estoy haciendo....

tengo el codigo en asm para que arranque desde un disquete y ejecute un par de comandos sencillos, ahora la duda que tengo es>

he visto que se puede meter codigo asm en un proyecto c, pero,,,,

es posible meter codigo c en un proyecto asm?

si es posible, de que forma?

P.D. no son mis deberes de la universidad, por si alguno piensa en ello, para empezar, no estudio ninguna carrera

Eternal Idol

Codigo sin compilar (lo que vendria ser el equivalente del inline assembly) segurisimo que no, codigo objeto tal vez podrias si las herramientas que usas lo soportan y no hace uso de ningun servicio del sistema (es decir si escribis en pantalla, trabajas con archivos, etc. olvidate), es de 16 bits (como asumo tu otro codigo en ASM).

¿Que queres hacer exactamente con ese codigo en C? No te va a ayudar a evitar escribir codigo para interactuar con el hardware ...
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

roller0

hombre, se que no me va a evitar nada si tengo que controlar el hardware, pero es... a ver como te digo

el codigo en asm seria como un loader que ejecuta partes del codigo en c que seria como un pekeño kernel con su shell

Eternal Idol

Podes generar un binario .COM (es decir un ejecutable compuesto pura y exclusivamente por codigo, sin ninguna cabecera) partiendo del codigo en C, escribirlo en ciertos sectores y despues desde el loader cargar esos sectores en memoria y saltar al principio del ejecutable.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

roller0

gracias, creo haberlo entendido

si tengo algun problemilla te sigo comentando

Yurix


Lo otro que puedes hacer es escribir una funcion en C y decirle al compilador que te genere el codigo en un .asm , todos lo hacen, copias el codigo (talves tienes que hacerle unos arreglos debido a las calling convention C , pascall , fastcall ...)
http://en.wikipedia.org/wiki/X86_calling_conventions

, pero eso tambien lo puedes modificar en los argumentos que le pasas al compilador del codigo C. Por ejemplo ,los compiladores de intel aceptan que le cambies las calling conventions. Asi de facil. cualquier duda me dices.

Espero que mis humildes conocimientos te ayuden.

Saludos


http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.