Hola,
respeto a la solución que me dijo Hacker_Zero, en el anterior post, ahora quiero agregarle memoria con HeapAlloc(), el caso es que lo he porbado con esta forma, pero no me va:
invoke HeapAlloc,GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PATH
¿Porque?
Gracias.
¿GetProcessHeap()? Te recomiendo que compres un libro de ensamblador asi comprendes que estas haciendo.
Cita de: Eternal Idol en 21 Marzo 2010, 14:01 PM
¿GetProcessHeap()? Te recomiendo que compres un libro de ensamblador asi comprendes que estas haciendo.
Sí, GetProcessHeap()... en C, sería:
LPCSTR a = (LPCSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PATH);
//o
HANDLE hHeapProcess = GetProcessHeap();
LPCSTR a = (LPCSTR)HeapAlloc(hHeapProcess,HEAP_ZERO_MEMORY,MAX_PATH);
No me puedes decir cómo es en ASM?... así cojo un referente para las demás API's y me voy enterando...
Saludos ;)
EDITO: con esto:
invoke HeapProcess <invoke GetProcessHeap>,HEAP_ZERO_MEMORY,MAX_PATH
Pero está mal... bueno es bueno llegar a conclusiones (con ayuda jeje :xD)...
El problema es que no sabes que hace invoke que no es una instruccion del microprocesador sino una directiva del ensamblador (http://msdn.microsoft.com/en-us/library/9kkd4k7y(VS.80).aspx).
invoke GetProcessHeap
invoke HeapAlloc, eax, HEAP_ZERO_MEMORY, MAX_PATH
call GetProcessHeap
push MAX_PATH
push HEAP_ZERO_MEMORY
push eax
call HeapAlloc
Sí, bueno ya lo ví (en el link de offtopic)... gracias. ¿El código te ha salido en dos, o son el mismo?
[offtopic]
Acá (http://foros.solocodigo.com/viewtopic.php?t=9171), me encanta la discusión... y tu descripción de invoke... :xD
[/offtopic]
PD: perdona, por hacer el ridículo... es que no llevo ni un dia con ASM, y quiero ir rapidísimo, ya me aprendo las definiciones, ...
EDITO: invoke, es standard con todos los Win?
Si recien estas empezando yo te recomiendo que no te metas con esas boludeces de invoke y eso, que a la larga te van a joder... aprende como se llama a funciones desde ensamblador, aprende(si no sabes, acerca de las calling convention.) y despues enredate con invoke y toda esa basura...
pd: invoke es una directiva pero de masm, en fasm me parece que es una macro... en fin implementaciones innecesarias para mi...
De buena onda te digo, trata de leer un libro para aprender ensamblador, los foros para mi son mas como una ayudita extra.. por eso lee, trata de digerir y despues veni :xD
Cita de: 08l00D en 21 Marzo 2010, 21:16 PM
Si recien estas empezando yo te recomiendo que no te metas con esas boludeces de invoke y eso, que a la larga te van a joder... aprende como se llama a funciones desde ensamblador, aprende(si no sabes, acerca de las calling convention.) y despues enredate con invoke y toda esa basura...
pd: invoke es una directiva pero de masm, en fasm me parece que es una macro... en fin implementaciones innecesarias para mi...
De buena onda te digo, trata de leer un libro para aprender ensamblador, los foros para mi son mas como una ayudita extra.. por eso lee, trata de digerir y despues veni :xD
Exacto! Es que no terminaba de entender invoke... usaré call(?)
Si, es lo mismo, primero te puse el codigo con invoke y abajo su equivalente en instrucciones del microprocesador.
Ir rapidisimo es una mala idea, no se puede correr sin saber caminar, primero tenes que aprender a gatear.
Si lo que buscas es una relacion con C/C++ no hay nada standard en assembly y el codigo no es portable. invoke estara o no disponible dependiendo del ensamblador que uses.
Cita de: Eternal Idol en 21 Marzo 2010, 21:19 PM
Si, es lo mismo, primero te puse el codigo con invoke y abajo su equivalente en instrucciones del microprocesador.
Ir rapidisimo es una mala idea, no se puede correr sin saber caminar, primero tenes que aprender a gatear.
Si lo que buscas es una relacion con C/C++ no hay nada standard en assembly y el codigo no es portable. invoke estara o no disponible dependiendo del ensamblador que uses.
Ok! Mejor, como ha dicho 08|L00D, me estudio primero las instrucciones. No es que quiera correr, me he rectificado en la última frase, perdón si no se ha notado...
PD: utilizo FASM, pero primero a las instrucciones!