Autor
|
Tema: PREGUNTAS CONCRETAS SOBRE ENSAMBLADOR LINUX/IA-32/GAS/BINUTILS (Leído 11,833 veces)
|
ADMIRATION
Desconectado
Mensajes: 31
empezando todo desde cero
|
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
Mensajes: 1.027
|
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
Mensajes: 1.466
♪ [8675309] ♪
|
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
Mensajes: 1.027
|
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 qmovq %rax, (%rsp) ; double movl %eax, (%rsp) ; long
A lo mejor es que no entiendo bien la tabla, es igual yo me entiendo jeje. @ADMIRATIONVale 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. .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
Mensajes: 31
empezando todo desde cero
|
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
Mensajes: 1.027
|
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. 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
Mensajes: 31
empezando todo desde cero
|
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
Mensajes: 1.027
|
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
Mensajes: 31
empezando todo desde cero
|
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
Mensajes: 31
empezando todo desde cero
|
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!!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda MUY BASICA sobre los registros en Ensamblador
Ingeniería Inversa
|
ferk93
|
3
|
6,113
|
2 Junio 2008, 16:51 pm
por ferk93
|
|
|
Dudas sobre dependecia de ensamblador
ASM
|
Tyrz
|
3
|
3,249
|
4 Diciembre 2009, 21:14 pm
por Tyrz
|
|
|
Calculadora en Lenguaje Ensamblador - Linux x86 & NASM
ASM
|
nicoobe
|
5
|
23,420
|
27 Febrero 2012, 02:33 am
por nicoobe
|
|
|
Ayuda instalar ensamblador en linux
Dudas Generales
|
ihb15
|
0
|
2,023
|
6 Mayo 2015, 18:09 pm
por ihb15
|
|
|
Preguntas que tengo sobre Linux
Hacking
|
S0y 3l 4n0n1m0
|
2
|
3,219
|
9 Febrero 2017, 07:46 am
por S0y 3l 4n0n1m0
|
|