elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
12 Octubre 2008, 18:37  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++
| | |-+  Problema "popad" Assembly inline GCC
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Problema "popad" Assembly inline GCC  (Leído 269 veces)
Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Problema "popad" Assembly inline GCC
« en: 02 Julio 2008, 00:34 »

por q no puedo hacer esto??

Código:
         asm ("popad");       
         __asm("popad"); 
         __asm__("popad");   

No me lo reconoce como valido...

tengo q poner los 8.    Asi nose puede cuando sale esp se va todo......

Código:
     asm ("pop %edi");         
     asm ("pop %esi");         
     asm ("pop %ebp");         
     asm ("pop %esp");         
     asm ("pop %ebx");         
     asm ("pop %edx");                             
     asm ("pop %ecx");         
     asm ("pop %eax");               

No me gusta asi...no hay otra forma?

« Última modificación: 02 Julio 2008, 00:42 por Ferсhu » En línea

E0N
Lab &
Colaborador

Desconectado Desconectado

Mensajes: 2.686


http://e0n-productions.blogspot.com/


Ver Perfil WWW
Re: Problema "popad" Assembly inline GCC
« Respuesta #1 en: 02 Julio 2008, 01:38 »

No querrás hacer un popa? que a fin de cuentas hace lo mismo que lo que tu has puesto en tu segunda etiqueta de código... Yo la instrucción popad no la conozco desde luego pero por la descripción que has hecho...

Código
int main(void)
{
__asm("pusha");
__asm("popa");
}

A mi me compila ok y no me peta la pila ni nada, supongo que querrás hacer eso ;)
Salu2
En línea

Inaugurado y en construcción:
http://e0n-productions.blogspot.com/
Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Problema "popad" Assembly inline GCC
« Respuesta #2 en: 02 Julio 2008, 02:39 »

jaa lo estaba probando con popad por eso no lo tomaba....grax
En línea

®®
Colaborador

Conectado Conectado

Mensajes: 5.268


Ver Perfil
Re: Problema "popad" Assembly inline GCC
« Respuesta #3 en: 02 Julio 2008, 17:02 »

pushad y popad existen, opcode 61h. al poner pusha y popa se entiende que es D.
En línea
Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Problema "popad" Assembly inline GCC
« Respuesta #4 en: 02 Julio 2008, 22:29 »

Citar
Insertar Cita
pushad y popad existen, opcode 61h. al poner pusha y popa se entiende que es D.

Si pero el compilador me decia q no reconocia "popad". Yo lo habia probado asi.

Bueno ya q estamos....

Se puede poner una instruccion asm pero en vez de diciendo el nombre de la instruccion, el Opcode.

Es decir, en vez de:

Código:
__asm("push %eax");

Hacerlo por su opcode:

Código:
__asm("\x50");

Aclaro q eso ultimo es inventado, es para q se entienda la idea.

Saludos!!
En línea

®®
Colaborador

Conectado Conectado

Mensajes: 5.268


Ver Perfil
Re: Problema "popad" Assembly inline GCC
« Respuesta #5 en: 02 Julio 2008, 23:40 »

si se puede, el del gcc no se si lo tomara por bueno, pero fasm tasm etc si deja.
En línea
Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Problema "popad" Assembly inline GCC
« Respuesta #6 en: 03 Julio 2008, 23:34 »

Nose como pero encontre la solucion, es asi:

Código:
    asm(".byte 64");
    asm(".byte 0x64");

y de paso probe:

Código:
    asm(".long 0x12345678");

Y tambien funciona.

Ahora me da curioisidad si se puede sustituir el 0x12345678 por un valor dinamico, probe con sprintf pero no se puede, por ahi vi algunas formas para usar variables de C con el codigo asm pero para esto no me sirvio ninguna.

En línea

®®
Colaborador

Conectado Conectado

Mensajes: 5.268


Ver Perfil
Re: Problema "popad" Assembly inline GCC
« Respuesta #7 en: 04 Julio 2008, 00:54 »

no creo que te sirvan variables ya que a la hora de compilarlo va a  usar la direccion de esta y no su valor, por lo que no puede compilar nada. si quieres modificar alguna parte del codigo es mas sencillo usar labels para obtener un puntero a esa zona de codigo y despues ya puedes modificar y hacerlo dinamico (en tiempo de ejecucion).
En línea
Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Problema "popad" Assembly inline GCC
« Respuesta #8 en: 04 Julio 2008, 04:21 »

Lo quiero para darle mas flexibilidad a la hora de crear codigo.

Hasta ahora siempre que quiero usar datos de variables en C con el codigo asm lo hago sabiendo como el compilador construye las funciones y donde ir a buscar los datos.

Pero aveces no solo uso el codigo generado al compilar sino q tmb que uso codigo asm creado en tiempo de ejecucion, por eso cuanta mas flexibilidad mejor.

Igualmente ya tengo varias formas y me arreglo bien para lo que quiero hacer, pero si hay mas conviene saberlas.

En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats