elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  como se traduce la declaración de una variable dentro de una función a asm i386?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como se traduce la declaración de una variable dentro de una función a asm i386?  (Leído 2,153 veces)
MRx86

Desconectado Desconectado

Mensajes: 88


Math's the way to do philosophy with the universe


Ver Perfil
como se traduce la declaración de una variable dentro de una función a asm i386?
« en: 7 Enero 2017, 09:12 am »

Hola, no uso mucho el "lenguaje" ensamblador y cada vez que intento estudiarlo por internet (intento buscar libros o manuales un poco más "avanzados" que los que se suelen encontrar en internet (esos que no hacen más nada que explicar la arquitectura del Intel 8086) cuando busco algo más hacia el i386, en si me salen cosas muy "basicas". Por cierto, por favor si alguien conoce algún sitio web o libro para buscar en PDF que explique un lenguaje ensamblador que no haya sido desarrollado antes del año 1985 (i386 o i486), estaria muy agradecido  :-\. Pero la pregunta en si es la siguiente:

Yo sé que el código de C:

Código
  1. unsigned int a;
  2.  
  3. int main()
  4. {
  5.    a = 1;
  6.    return 0;
  7. }
  8.  

Se puede traducir a asm  i386 como:

a dw 0
jmp start

start:
mov a, 1
ret

Pero un código así:

Código
  1. unsigned int a;
  2.  
  3. int main()
  4. {
  5.    int b = 0;
  6.    b = 1;
  7.    a = 1;
  8.    return 0;
  9. }
  10.  

Si las variables globales se declaran

<Nombre> dw <valor>

Como se declara una local ya que se declara metiéndola en el stack?, Así?:

A dw 0
jmp start

start:
mov a, 0

;Así se declararía la variable (b)?
mov ax, 0
push ax

;Y cuando se quisiera acceder a ella se haría algo asi?:
mov ss:[bp+sp], 1; b = 1


Pd: necesito aprender sobre compiladores...

Saludos


En línea

"Tengo una pregunta que a veces me tortura: ¿Estoy loco
yo, o los locos son los demas?"
- Albert Einstein
Poyoncio

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: como se traduce la declaración de una variable dentro de una función a asm i386?
« Respuesta #1 en: 7 Enero 2017, 10:52 am »

No, no intentes pasar el código así tal cual, intenta aprender antes, ensamblador no es como C, en ASM se tiene que declarar secciones y usar etiquetas de inicio, yo mismo estoy escribiendo a cerca de aprender asm en i386 http://foro.elhacker.net/asm/curso_ensamblador-t462931.0.html

Por otra parte tambien te comento, que puedes decompilar el código para ver que contiene, no te recomiendo que aprendas así, pero siempre puedes ir probando
https://github.com/radare/radare2


En línea

Curso de ensamblador desde cero
MRx86

Desconectado Desconectado

Mensajes: 88


Math's the way to do philosophy with the universe


Ver Perfil
Re: como se traduce la declaración de una variable dentro de una función a asm i386?
« Respuesta #2 en: 7 Enero 2017, 16:51 pm »

Tu blog se ve muy interesante, si tienes razón en Internet se encuentra muy poca documentación sobre ese tipo de ensamblador, siempre ese condenado 8086, que Internet no entiende que ya nadie lo utiliza??? XD.

Saludos y gracias por tu ayuda!!
En línea

"Tengo una pregunta que a veces me tortura: ¿Estoy loco
yo, o los locos son los demas?"
- Albert Einstein
Poyoncio

Desconectado Desconectado

Mensajes: 220



Ver Perfil WWW
Re: como se traduce la declaración de una variable dentro de una función a asm i386?
« Respuesta #3 en: 7 Enero 2017, 17:01 pm »

Pues yo cuando estaba aprendiendo encontré mucho de i386, igualmente, los fundamentos en 8086 son los mismos tanto en i386 como en 64
En línea

Curso de ensamblador desde cero
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: como se traduce la declaración de una variable dentro de una función a asm i386?
« Respuesta #4 en: 7 Enero 2017, 20:06 pm »

Puedes declarer la variable en su sección correspontidente, e incluso si solo es para leer en el mismo cuerpo del codigo.

Hay muchas formas de pasar esa variable:

Código
  1. .section .data
  2. a: .word 0x01

Código
  1. push $0x1

Código
  1. subl $4, %esp
  2. movl $1, (%esp)
  3.  
  4. ; esta mejor
  5.  
  6. movl $1, -4(%esp)


Libros tienes un monton solo haciendo una busqueda por amazon mira lo que encontre.

https://www.amazon.es/dp/1484200659/ref=pd_sim_14_1?_encoding=UTF8&psc=1&refRID=6BHJXT0J67B4FSRH8QDD

https://www.amazon.es/Introduction-Intel-Assembly-Language-Programming/dp/1478119209

Asi unos cuantos.

Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines