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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS  (Leído 11,152 veces)
ADMIRATION

Desconectado Desconectado

Mensajes: 31


empezando todo desde cero


Ver Perfil
PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« en: 23 Enero 2014, 14:21 pm »

Sobre curso de introduccion al lenguaje ensamblador:
S.O: Ubuntu 12.10, Arquitectura a estudiar: IA-32, Ensamblador: Gas, Compilador: GCC(binutils, de serie).
1ª Pregunta: Sobre el tamaño de los tipos de datos, ¿es posible declararlos en Python en lugar de en C? (http://learnassembler.com/IA32esp.html)
Desde mi desconocimiento total del tema, estoy empezando en este mundo y durante este curso me van surgiendo preguntas que pueden ayudar a otras personas usando la misma plataforma y herramientas que yo. Agradeceria me fueran contestanto a este hilo.
NO CONTESTAR PARA OTRAS PLATAFORMAS Y S.O PARA SALVAGUARDAR EL CARACTER CONCISO DE ESTE HILO.
Muchas gracias de antemano


« Última modificación: 24 Enero 2014, 11:35 am por ADMIRATION » En línea

No muerdas la mano de quien te cuida, te mima y te da de comer. ¡¡NO LO MERECE!!
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #1 en: 24 Enero 2014, 20:10 pm »

A ver no se entiende tu pregunta, pero no estas en ASM para que preguntas en python y C.

Ademas esa tabla esta equivocada yo no la miraria mucho para un double o .quad el sufijo es q.

Un saludo.


En línea

Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #2 en: 24 Enero 2014, 21:13 pm »

A ver no se entiende tu pregunta, pero no estas en ASM para que preguntas en python y C.

Ademas esa tabla esta equivocada yo no la miraria mucho para un double o .quad el sufijo es q.

Un saludo.

La tabla está bien, se refiere a números con coma flotante.

Al op, yo tampoco entiendo la pregunta xD
En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #3 en: 24 Enero 2014, 22:46 pm »

La tabla está bien, se refiere a números con coma flotante.

Al op, yo tampoco entiendo la pregunta xD

Para mover un double "ocho bytes", no tiene porque ser un numero de coma flotante se usa el subijo q

Código
  1. movq %rax, (%rsp) ; double
  2. movl %eax, (%rsp) ; long

A lo mejor es que no entiendo bien la tabla, es igual yo me entiendo jeje.


@ADMIRATION

Vale quieres decir que te pasemos las declaraciones que estan en C a python?

Si es eso no hace falta, tienes que cambiar el chip, en ASM (GAS) esas declaraciones no existen, bueno mentira hay algunas declaraciones que tienen practicamnete el mismo nombre. Bueno mejor llama a declaraciones directivas.

Las tienes en el link que te pase de as.

Código:
.byte    b  ; 1 byte 
.word    w  ; 2 byte
.long    l  ; 4 byte
.quad    q  ; 8 byte
.octa       ;16 byte  ; xmm registro

Depende de si tabajas con numeros de coma flotante tienes que usar otras instrucciones y no hace falta el prefijo, seguro que Tzhed\ Kyperf/  se referia a eso.

Los registros se asemejan a esas directivas, ya veras cuando avances, tambien existe un registro de 32 byte ymm, y los zmm 64 byte, depende de la CPU. No se si hay directivas para esos dos.

Un saludo.
En línea

ADMIRATION

Desconectado Desconectado

Mensajes: 31


empezando todo desde cero


Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #4 en: 27 Enero 2014, 11:55 am »


Declaración en C   Tipos de datos en IA-32   Sufijo de gas   Tamaño (en bytes)
char   byte   b   1
short   palabra   w   2
int   doble palabra   l   4
unsigned   doble palabra   l   4
long int   doble palabra   l   4
unsigned long   doble palabra   l   4
char*   doble palabra   l   4
float   precisión simple   s   4
double   precisión doble   l   8
long double   precisión extendida   t   12
A la columna de la izquierda me referia. Claro que estudio ASM, pero entonces: ¿que sentido tiene dicha columna que se titula: DECLARACION EN C?
Porque esta columna no me la he inventado yo, sino que esta plasmada en el link de assembler.com que dedica un curso a ensamblador.
Solo intento buscar el sentido de la informacion que recibo.
2ª Pregunta: Respecto al codigo "hello world en ensamblador gas del link:http://www.tldp.org/HOWTO/Assembly-HOWTO/hello.html.
Queriendo entender el codigo:
         1).text                           # section declaration

                                   # we must export the entry point to the ELF 2)linker or
   3) .global _start              # loader. They conventionally recognize _start as their
                                   # entry point. Use ld -e foo to override the default.

4)_start:
                       # write our string to stdout

5)       movl    $len,%edx           # third argument: message length
6)     movl    $msg,%ecx           # second argument: pointer to message to write
7)     movl    $1,%ebx             # first argument: file handle (stdout)
8)     movl    $4,%eax             # system call number (sys_write)
9)     int     $0x80               # call kernel

                                # and exit

10)     movl    $0,%ebx             # first argument: exit code
     movl    $1,%eax             # system call number (sys_exit)
11)     int     $0x80               # call kernel

12).data                           # section declaration

13)msg:
14)   .ascii    "Hello, world!\n"   # our dear string
15)   len = . - msg                 # length of our dear string
Enumeradas todas las lineas del codigo:
¿que funcion realizan cada una, empezando por la 1).text?
Espero que vuestras respuestas le sirvan a las personas prncipiantes como yo a familiarizarse con el codigo.
Gracias cpu2 y Tzhed\ Kyperf/
En línea

No muerdas la mano de quien te cuida, te mima y te da de comer. ¡¡NO LO MERECE!!
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #5 en: 27 Enero 2014, 14:01 pm »

Pues para tener una referencia nada mas, pero esas declaraciones de C no te sirven para nada.

A ver, te explico de forma basta, si quieres saber mas lee los manuales como te dije.

.text y .data: Los programas se dividen en secciones, .text es la que contiene las instrucciones (opcodes) bueno tambien puedes cargar opcode en otras secciones como data pero eso ya es otra cosa, estas secciones algunas tienen permisos como de escritura y lectura, por ejemplo la .text solo puedes leerla pero no escribirla. La .data como dice su nombre es para almacenar datos, esta puede escribirse y leerse.

Depende de la sección que utilices tendra un offset o otro, ya que usas linux podrias usar readelf y algo con objdump, para mirar esas direcciones y permisos. Si quieres saber con mas profundidad ya sabes.

.globl es una directiva que le dice al linker por que offset empezar.

Código:
https://sourceware.org/binutils/docs/as/Global.html#Global

No miraste el link.

Y las instrucciones lo unico que hacen es pasar los parametros a una funcion de C alojada en el kernel, en este caso write y exit, tienes que leer el man de esas funciones, para saber que pasar a los parametros.

Deja bien claro lo que hace al lado, esfuerzate mas. Los de .data lo solucionas leyendo el man de as.

Un saludo.
En línea

ADMIRATION

Desconectado Desconectado

Mensajes: 31


empezando todo desde cero


Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #6 en: 27 Enero 2014, 16:21 pm »

No dudes que lo he mirado, y leído y reeleido. Lo único es que me falta relacionarme con el código, voy muy perdido aun. No tengo claro aun el tipo de instrucciones. Para que sirven, en que parte se escribe.
PERO SEGUIRE LEYENDO, Y ESTUDIANDO CADA PARTE DEL CODIGO Y INFORMANDOME DE QUE ES LO QUE HACE CADA LINEA, ASI COMO LAS INSTRUCCIONES Y LOS TIPOS DE DATOS.
Cosas que tenia claras en Python y que aquí me hace falta descubrir.
Gracias y saludos cpu2.
En línea

No muerdas la mano de quien te cuida, te mima y te da de comer. ¡¡NO LO MERECE!!
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #7 en: 27 Enero 2014, 21:50 pm »

Solo me dio la sensacion de que no te mirastes el manual.

Lo unico que hace ese codigo es pasar argumentos y llamar a funciones del kernel. La instruccion mov "mover" el nombre engaña no mueve copia, es una instruccion esencial, basicamente es eso lo que hace, pero si te vas a los manuales de intel veras que esta mejor explicada.

La instruccon int es mas compleja, carga el numero de la funcion en %eax, y transfiere al vector 0x80 "vale para mas vectores", que es el que usa linux para las llamadas, pero para entenderla mejor tendrias que saber para que sirve la IDT y todo eso, yo aun no lo tengo muy claro.

Un saludo.
En línea

ADMIRATION

Desconectado Desconectado

Mensajes: 31


empezando todo desde cero


Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #8 en: 28 Enero 2014, 09:13 am »

Gracias por la aclaracion de la columna de la izquierda cpu2, ya me quedan los conceptos algo mas claros, y el link ultimo sobre .global del as y las otras me va ayudando a aclarar conceptos, aunque tengo aun muchisimo que aclarar. Pero voy de camino.
Por eso en la pagina de gas del codigo "hellow world", me moleste en enumerar el codigo linea a linea: Para que miembros con tu nivel de ensamblador y que hayan tocado esta plataforma en concreto, fueran describiendo poco a poco el desarrollo de cada linea. No hacia falta describirlas todas a la vez, sino a medida que algun miembro estuviera inspirado, para ir siguiendo el hilo, ¿me entiendes?
Para ayudar a personas como yo que empiezan aqui desde cero, a irse familiarizando un poco mas con el codigo y su estructura.
Las ultimas referencias que das me ayudan mucho.
Gracias cpu2, un saludo.
En línea

No muerdas la mano de quien te cuida, te mima y te da de comer. ¡¡NO LO MERECE!!
ADMIRATION

Desconectado Desconectado

Mensajes: 31


empezando todo desde cero


Ver Perfil
Re: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS
« Respuesta #9 en: 12 Febrero 2014, 18:02 pm »

Pregunta sobre este, mi primer codigo en asm/gas/x86/intel,  para ponerlo en practica:
Abro consola ubuntu e invoco escribiendo:

$ as
Sigo con el código:
$ .section .data.                                                                      #declaro la variable "message"                                                           
message: db .ascii "esta es una linea de texto ,0dh ,0ah y esta es otra" , 0
#Desde aquí finalizo codigo
movl $1, %eax
movl $0, %ebx
int $0×80

¿deberia haberlo escrito en editor de texto con el resultado de la lectura de la frase?
¿que errores he cometido?
¿el resultado que genera este código es la lectura de esta frase con retorno de carro como indican los símbolos hexadecimales 0dh y 0ah?
Perdonen mi torpeza y mis confusiones pero soy noob e intento aprender paso a paso este fascinante pero confuso lenguaje

En línea

No muerdas la mano de quien te cuida, te mima y te da de comer. ¡¡NO LO MERECE!!
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda MUY BASICA sobre los registros en Ensamblador
Ingeniería Inversa
ferk93 3 5,806 Último mensaje 2 Junio 2008, 16:51 pm
por ferk93
Dudas sobre dependecia de ensamblador
ASM
Tyrz 3 3,096 Último mensaje 4 Diciembre 2009, 21:14 pm
por Tyrz
Calculadora en Lenguaje Ensamblador - Linux x86 & NASM
ASM
nicoobe 5 22,713 Último mensaje 27 Febrero 2012, 02:33 am
por nicoobe
Ayuda instalar ensamblador en linux
Dudas Generales
ihb15 0 1,857 Último mensaje 6 Mayo 2015, 18:09 pm
por ihb15
Preguntas que tengo sobre Linux
Hacking
S0y 3l 4n0n1m0 2 2,998 Último mensaje 9 Febrero 2017, 07:46 am
por S0y 3l 4n0n1m0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines