Autor
|
Tema: ¿Como puedo crear una libreria estatica con flat assembler? (Leído 5,913 veces)
|
Avoidance25
Desconectado
Mensajes: 12
inot !!!
|
Tengo un codigo de una dll, que es una modificacion mia de un ejemplo que traia el compilador, y quisiera compilar este codigo de tal manera a que se compile como una libreria estatica (".a" o ". lib"). ¿Como lo hago? Este es mi codigo: format PE GUI 4.0 DLL entry DllEntryPoint
include 'win32a.inc' cadena db 'asd',0
;section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved mov eax,TRUE ret endp
proc MiFuncion invoke MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK ret endp
section '.idata' import data readable writeable
library user,'USER32.DLL'
import user,\ MessageBox,'MessageBoxA'
section '.edata' export data readable
export 'midll.dll',\ MiFuncion,'MiFuncion'
section '.reloc' fixups data discardable
|
|
|
En línea
|
--Recuerda siempre que eres único… Exactamente igual que todos los demás. --Diplomacia es el arte de decir “bonito perrito”… hasta que puedas encontrar una piedra. --Morir es como dormir, pero sin levantarse a hacer pis. --En las guerras, los soldados reciben las balas y los generales las medallas.
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Esto es muy especifico de la herramienta que uses, FASM por lo que veo. Yo no puedo ver como hacerlo aca en el manual: http://flatassembler.net/docs.php?article=manual#2.4format PE GUI 4.0 LIB fue mi primera intuicion pero no funciona y obviamente no figura ahi. Agrego, es posible generar archivos objeto COFF y con VC++ entonces generar una libreria estatica, esto es algo muy basico que apenas ensambla, enlaza y funciona pero tendras que hacer mas. Tu codigo para .obj: format MS COFF ;entry DllEntryPoint include 'win32a.inc' cadena db 'asd',0 section '.text' code ;readable executable proc DllEntryPoint hinstDLL,fdwReason,lpvReserved mov eax,TRUE ret endp public MiFuncion public MiFuncion as '_MiFuncion' proc MiFuncion invoke MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK ret endp section '.idata' data ;Mimport data ;readable writeable library user,'USER32.DLL' extrn '__imp__MessageBoxA@16' as MessageBox:dword ; import user,\ ; MessageBox,'MessageBoxA' section '.edata' data ;export data readable ; export 'midll.dll',\ ; MiFuncion,'MiFuncion' section '.reloc' data; fixups data discardable
fasm faLib.asm generara faLib.obj lib faLib.obj generara faLib.lib Un ejemplo para llamar a la libreria ( MASM): .386 .model flat, stdcall MiFuncion PROTO C:DWORD .code main: call miFuncion ret end main
ml call.asm faLib.lib user32.lib
|
|
« Última modificación: 6 Noviembre 2009, 23:14 pm por Eternal Idol »
|
En línea
|
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
|
|
|
Avoidance25
Desconectado
Mensajes: 12
inot !!!
|
Muchas gracias por tu respuesta.
Entonces, ¿lib es un comando de VC++?. ¿No conoces alguna forma de linkear el archivo objeto con MinGW ?.
|
|
|
En línea
|
--Recuerda siempre que eres único… Exactamente igual que todos los demás. --Diplomacia es el arte de decir “bonito perrito”… hasta que puedas encontrar una piedra. --Morir es como dormir, pero sin levantarse a hacer pis. --En las guerras, los soldados reciben las balas y los generales las medallas.
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Si, no lo se, consulta la documentacion de MinGW ... tal vez tambien quieras averiguar sobre otros ensambladores como MASM o NASM.
|
|
|
En línea
|
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
|
|
|
Avoidance25
Desconectado
Mensajes: 12
inot !!!
|
Ok, muchas gracias.
|
|
|
En línea
|
--Recuerda siempre que eres único… Exactamente igual que todos los demás. --Diplomacia es el arte de decir “bonito perrito”… hasta que puedas encontrar una piedra. --Morir es como dormir, pero sin levantarse a hacer pis. --En las guerras, los soldados reciben las balas y los generales las medallas.
|
|
|
YST
Desconectado
Mensajes: 965
I'm you
|
No es necesario el DllEntryPoint Por ejemplo Codigo que llama a la lib creadaformat MS COFF include 'win32ax.inc' extrn '__imp__ExitProcess@4' as ExitProcess extrn '_MiFuncion' as MiFuncion public Main as '_Main' section '.text' code readable executable Main: stdcall MiFuncion stdcall dword[ExitProcess]
y el codigo de la libreria format MS COFF include 'win32ax.inc' extrn '__imp__MessageBoxA@16' as MessageBox:dword public MiFuncion as '_MiFuncion' proc MiFuncion invoke MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK ret cadena db "asd",0 endp
Para crear la .lib desde el .obj que crea el fasm puedes como decia eternal usar el "lib" del VC++ de la siguiente forma y luego para linkear el .obj ( el primero , el del codigo principal ) con la libreria puedes linkear con el link de VC++ de la siguiente manera link Principal.obj /entry:Main /subsystem:windows /DEFAULTLI B:TuLibreria.lib /DEFAULTLIB:kernel32.lib /DEFAULTLIB:user32.lib
|
|
|
En línea
|
Yo le enseñe a Kayser a usar objetos en ASM
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Es su codigo con lo minimo comentado para que ensamble ... en fin, ahora ya sabra otra manera de enlazar el codigo de la libreria estatica que quiere generar con las herramientas que no quiere usar.
|
|
« Última modificación: 8 Noviembre 2009, 23:23 pm por Eternal Idol »
|
En línea
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿algun tuto y libro sobre flat assembler?
ASM
|
AlxSpy
|
4
|
9,505
|
24 Junio 2011, 07:30 am
por d(-_-)b
|
|
|
[DUDA]uso del mov en flat assembler
ASM
|
AlxSpy
|
2
|
5,016
|
26 Junio 2011, 23:08 pm
por AlxSpy
|
|
|
[DUDA] Como crear una Librería Dinámica.
Programación C/C++
|
Zodiak98
|
2
|
2,393
|
25 Mayo 2013, 00:05 am
por Zodiak98
|
|
|
Como puedo instalar la librería <conio.h>
Programación General
|
Xylibox.RD
|
2
|
2,637
|
26 Septiembre 2013, 00:09 am
por Xylibox.RD
|
|
|
Proyecto traducción Flat Assembler Programmer's Manual
ASM
|
Ózar
|
0
|
2,289
|
1 Junio 2018, 06:46 am
por Ózar
|
|