Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: TheEnmanuelRmrz en 1 Noviembre 2014, 08:14 am



Título: Como utilizar un módulo .obj en C++
Publicado por: TheEnmanuelRmrz en 1 Noviembre 2014, 08:14 am
Saludos.
Hace tiempo leí por ahí que los archivos que obtienes cuando ensamblas un programa se pueden utilizar como subrutinas en programas C o C++ mi duda es como por ejemplo implementaría una función desde C que esté contenida en un .obj
y si tengo que exportarla o algo así?


Título: Re: Como utilizar un módulo .obj en C++
Publicado por: Eternal Idol en 1 Noviembre 2014, 09:30 am
¿Implementaria o llamaria a una funcion queres decir? Para poder llamarla tenes que declarar la funcion correctamente en ambos lenguajes, tiene que coincidir la convencion de llamada y el decorado (http://en.wikipedia.org/wiki/Name_mangling). Un ejemplo en VC++ y MASM con stdcall:

Código
  1. ...
  2. PUBLIC suma@8
  3. ...
  4. suma@8:
  5.  mov eax, dword ptr [esp + 4]
  6.  add eax, dword ptr [esp + 8]
  7. ret 8
  8. ...
  9.  

Código
  1. unsigned int __stdcall suma(unsigned int x, unsigned int y);
  2. ...
  3. printf("%d\r\n", suma(5, 25));
  4. ...