Agregar memoria HeapAlloc()

Iniciado por E.P.I., 21 Marzo 2010, 13:07 PM

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

E.P.I.

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:

Código (asm) [Seleccionar]
invoke HeapAlloc,GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PATH

¿Porque?

Gracias.
La verdad nos hará libres

Eternal Idol

¿GetProcessHeap()? Te recomiendo que compres un libro de ensamblador asi comprendes que estas haciendo.
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

E.P.I.

#2
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:

Código (cpp) [Seleccionar]
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:

Código (asm) [Seleccionar]
invoke HeapProcess <invoke GetProcessHeap>,HEAP_ZERO_MEMORY,MAX_PATH 

Pero está mal... bueno es bueno llegar a conclusiones (con ayuda jeje  :xD)...
La verdad nos hará libres

Eternal Idol

El problema es que no sabes que hace invoke que no es una instruccion del microprocesador sino una directiva del ensamblador.

Código (asm) [Seleccionar]
invoke GetProcessHeap
invoke HeapAlloc, eax, HEAP_ZERO_MEMORY, MAX_PATH


Código (asm) [Seleccionar]
call GetProcessHeap
push MAX_PATH
push HEAP_ZERO_MEMORY
push eax
call HeapAlloc
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

E.P.I.

#4
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á, 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?
La verdad nos hará libres

08l00D

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

E.P.I.

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(?)
La verdad nos hará libres

Eternal Idol

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.
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

E.P.I.

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!
La verdad nos hará libres