Programación: introducción
La serie de artículos de programación comienza aquí, con una sencilla introducción para que puedas comprender la programación desde cero. De hecho, te recomiendo que leas los artículos de la serie RISC-V para ayudarte a entender mucho mejor cómo funciona una computadora.
Voy a intentar que esta serie de artículos sea algo diferente. He visto gran cantidad de vídeos, artículos y otro tipo de contenido, donde se limitan a enseñarte un lenguaje de programación con teoría acompañada de pequeños snippets o fragmentos de código como ejemplo de cada lección. En esos casos, el estudiante básicamente se limita a leer e imitar o, en el mejor de los casos, modificando sobre la marcha los códigos para crear pequeños programas derivados de los ejemplos.
Pero eso tiene un problema de base, y es que me he dado cuenta que cuando los estudiantes intentan hacer algo más que modificar un código y se deciden a crear un programa desde cero, no saben realmente cómo diseñar el programa o cómo enfrentarse a un problema muy diferente al que viene en los ejemplos. Eso es lo que intentaré que cambie en esta serie de artículos, para darte las herramientas para que puedas terminar diseñando tus propios programas desde cero…
ÍNDICE:
¿Qué es un lenguaje de programación?
Es un lenguaje formal compuesto por una serie de símbolos y reglas que permiten elaborar algoritmos introduciendo una serie de instrucciones y datos. Cada lenguaje de programación tiene una sintaxis diferente, y una serie de detalles que lo diferencian del resto. Por ejemplo, unas nomemclaturas estándar (snake_case, kebab-case, CamelCase, UPPERCASE) y palabras reservadas que varían.
Los lenguajes de programación no son comprensibles por la máquina, deben ser procesados para que el hardware los comprenda. Dentro de los lenguajes podemos diferenciar entre:
- Lenguaje máquina: también llamado de primera generación o 1GL. Es el único lenguaje que sí es directamente comprensible por el hardware. Es decir, un código binario compuesto por unos y ceros que se puede almacenar en una memoria y es interpretado por la electrónica como tensiones altas y bajas. No obstante, incluso este lenguaje máquina no es comprensible por todas las máquinas, sino por aquellas para las que haya sido creado (código nativo). Tú no entiendes todos los lenguajes, ¿verdad? Una CPU SPARC tampoco comprende un binario para ARM o viceversa…
- Lenguaje de bajo nivel (ensamblador): también conocido como lenguaje de segunda generación o 2GL. Es un lenguaje complejo pero entendible por los humanos. Se compone de una sintáxis específica para introducir datos en distintos formatos y unos mnemónicos que hacen referencia a las instrucciones que se pueden usar por una determinada ISA. Si escribes un programa en lenguaje ensamblador y generas un binario comprensible por la máquina a partir de él, solo será comprensible por una familia concreta. Al igual que ocurre con el lenguaje máquina, el código ensamblador o ASM para x86 no funcionaría en PPC o viceversa…
- Lenguaje de alto nivel: existen muchos lenguajes de alto nivel. En estos casos son mucho más intuitivos para las personas y tienen un nivel de abstracción mayor, permitiendo que un código fuente escrito en un lenguaje de alto nivel pueda funcionar en nuestra arquitectura si lo compilamos de forma normal o en otras arquitecturas diferntes si se compila desde una máquina con dica arquitectura o se usa compilación cruzada desde una máquina con arquitectura diferente. Ejemplos de estos lenguajes son Cobol, Fortran, C#, C++, Basic, Pascal, etc.
- Lenguaje de medio nivel: normalmente no todos los autores hacen uso de esta categoría, pero existen algunos lenguajes de medio nivel, es decir, apartentemente son lenguajes de alto nivel, pero permiten programar en algunos casos a bajo nivel. Ejemplo de ello es C y Basic.
A parte de poderlos catalogar desde ese punto de vista, también se puede hacer distinción entre:
- Lenguaje de programación compilado: cualquier lenguaje que necesite de un compilador para generar el binario o ejecutable. La ventaja es que tienen a tener mejor rendimiento al no tener que traducirlos en tiempo real o tener un intérprete ejecutándose de forma simultánea. Portar este tipo de códigos es posible en muchos casos, pero puede que haya algunos casos específicos en los que no se pueda ejecutar en otra plataforma cuando se ha hecho uso de ciertas syscalls que limitan su compatibilidad a un cierto sistema operativo, uso de cierta API o biblioteca de la que dependa, o ser compilados para una arquitectura específica. Ejemplos C, C++, Pascal, ADA, Haskell, D,…
- Lenguaje de programación interpretado: cualquier lenguaje que necesite de un intérprete o máquina virtual para ser traducido o interpretado en tiempo de ejecución. Eso los hace menos eficientes, aunque tiene la ventaja de que son códigos muy portables que pueden ser ejecutados en cualquier máquina en la que se pueda instalar el intérprete o máquina virtual. Ejemplos Ruby, Python, Java,…
Definición de algoritmo:
Un algoritmo, y aquí está la clave de los problemas que comentaba sobre la capacidad de crear un programa desde cero, es un conjunto de pasos ordenados y finitos que permiten resolver un problema o tarea específica. Si sabes diseñar un algoritmo podrás luego trasladarlo fácilmente a código fuente y poder crear el programa que quieras sin necesidad de usar códigos ya creados para modificarlos, etc.
El algoritmo es totalmente abstraído de todo, tanto del hardware en el que se vaya a ejecutar como del lenguaje de programación que se vaya a usar para implementarlo. Por tanto, si diseñas un algoritmo lo puedes trasladar al lenguaje que quieras y hacerlo correr en la máquina que necesites (o casi siempre).
Algunas de sus características de los algoritmos computacionales son:
- Finito: debe tener un primer paso y un último paso, por tanto, un número finito de instrucciones.
- Preciso: debe tener un orden entre los pasos desde inicio a fin.
- Definido: no debe ser ambiguo o dar pie a dobles interpretaciones. Cada vez que se ejecute puede dar resultados diferentes a su salida, pero no debido a interpretaciones distintas, sino a la entrada de datos distintos.
Por ejemplo, si te gusta cocinar, un algoritmo podría ser la propia receta. Por ejemplo, el algoritmo para hacer huevo frito sería:
- Inicio.
- Coge una sartén.
- Pon la sartén sobre la placa.
- Añade aceite a la sartén.
- Enciende el fuego.
- Espera a que se caliente el aceite.
- Parte un huevo.
- Agrega el contenido al aceite.
- Espera a que esté frito.
- Retira la sartén del fuego.
- Apaga el fuego.
- Retira el huevo del aceite.
- Ponlo en un plato.
- Fin.
Como «chiste», permíteme decir que si la receta de propietaria solo podrías comerte el huevo, pero no ver cómo se hace, ni compartirla, ni modificarla,…
El algoritmo, como ya veremos en los ejemplos, se puede también dibujar en forma de diagrama de flujo que sería mucho más gráfico e intuitivo. Además, también se puede crear un pseudocódigo que nos ayude a exportar mejor el diagrama a un lenguaje deprogramación.
Definición de programa:
Básicamente un programa es una serie de instrucciones y datos almacenados en una memoria y listos para ser procesados por el procesador. Las instrucciones serán interpretadas por la CPU y realizarán una operación sobre los datos para obtener los resultados buscados. Las instrucciones del programa tendrán un orden concreto, y deben ser ejecutadas en dicho orden para dar un resultado válido (ya veremos que esto no es del todo así en las modernas microarquitecturas).
Para que ese programa se haya podido almacenar en la memoria y ser procesado, ya sabes que debe estar en código máquina. Y para llegar ahí, antes debemos haber escrito un código fuente, es decir, un fichero con una serie de líneas de código escrito en algún lenguaje de programación.
En definitiva, un programa o proceso son órdenes para el hardware…
Proceso de compilación:
Antes comenté que los lenguajes de programación no eran comprensibles por la máquina y para que sí lo sean, deben pasar un proceso que vamos a explicar ahora. Pero antes recuerda la diferencia entre lenguaje interpretado vs compilado. Aquí nos vamos a centrar en el compilado, que debe pasar el siguiente proceso para ser comprendido por el hardware.
Aunque el proceso esté compuesto por varias etapas, entre ellas la compilación, para poder transformar ese lenguaje de alto/medio nivel en un binario, se suele denominar a todo el proceso completo como compilación. Vamos a hacer algo, abre un terminal en tu GNU/Linux y ve haciendo todo el proceso a la par que lees, seguro que lo vas a captar mejor:
¡Tranquilo, si no entiendes el código no es necesario por el momento!
Abre un editor de texto para escribir un código fuente llamado hola.c:
nano hola.c
Dentro del fichero escribe el siguiente código en lenguaje C:
#include <stdio.h> int main() { printf("Hola mundo\n"); return 0; }
Guarda los cambios Ctrl + O y cierra el fichero Ctrl + X. Ahora vamos a compilarlo con GNU GCC:
gcc hola.c -o hola
Se nos ha creado un binario llamado hola. Hemos conseguido que ese snipet en C sea comprensible por nuestra CPU y lo podemos ejecutar y ver el resultado:
./hola
Si lo que quieres es ver el código ensamblador equivalente, es decir, las instrucciones del repertorio que se han usado para poder implementar el Hola Mundo por la CPU:
gcc -S hola.c cat hola.s
Y obtendrás algo similar a esto:
.file "hola.c" .section .rodata .LC0: .string "Hola" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl $.LC0, %edi call puts movl $0, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609" .section .note.GNU-stack,"",@progbits
Ves que se han usado, en este caso, instrucciones del set x86 como MOVL, POPQ, PUSHQ,… Por tanto, sería comprensible por una CPU de esta familia, pero no por otra. Fíjate lo distinto que es un ASM de ARM:
.text .global _start _start: mov r0, #1 ldr r1, =message ldr r2, =len mov r7, #4 swi 0 mov r7, #1 swi 0 .data message: .asciz "Hola mundo\n" len = .-message
Instrucciones diferentes, registros diferentes,… eso es lo que está definido en la ISA. ¿Recuerdas?
Igual para el binario:
objdump -D hola
El resultado sería algo como:
hola: formato del fichero elf64-x86-64 Desensamblado de la sección .interp: 0000000000400238 <.interp>: 400238: 2f (bad) 400239: 6c insb (%dx),%es:(%rdi) 40023a: 69 62 36 34 2f 6c 64 imul $0x646c2f34,0x36(%rdx),%esp 400241: 2d 6c 69 6e 75 sub $0x756e696c,%eax 400246: 78 2d js 400275 <_init-0x153> 400248: 78 38 js 400282 <_init-0x146> 40024a: 36 2d 36 34 2e 73 ss sub $0x732e3436,%eax 400250: 6f outsl %ds:(%rsi),(%dx) 400251: 2e 32 00 xor %cs:(%rax),%al Desensamblado de la sección .note.ABI-tag: 0000000000400254 <.note.ABI-tag>: 400254: 04 00 add $0x0,%al 400256: 00 00 add %al,(%rax) 400258: 10 00 adc %al,(%rax) 40025a: 00 00 add %al,(%rax) 40025c: 01 00 add %eax,(%rax) 40025e: 00 00 add %al,(%rax) 400260: 47 rex.RXB 400261: 4e 55 rex.WRX push %rbp 400263: 00 00 add %al,(%rax) 400265: 00 00 add %al,(%rax) 400267: 00 02 add %al,(%rdx) 400269: 00 00 add %al,(%rax) 40026b: 00 06 add %al,(%rsi) 40026d: 00 00 add %al,(%rax) 40026f: 00 20 add %ah,(%rax) 400271: 00 00 add %al,(%rax) ... Desensamblado de la sección .note.gnu.build-id: 0000000000400274 <.note.gnu.build-id>: 400274: 04 00 add $0x0,%al 400276: 00 00 add %al,(%rax) 400278: 14 00 adc $0x0,%al 40027a: 00 00 add %al,(%rax) 40027c: 03 00 add (%rax),%eax 40027e: 00 00 add %al,(%rax) 400280: 47 rex.RXB 400281: 4e 55 rex.WRX push %rbp 400283: 00 0f add %cl,(%rdi) 400285: 61 (bad) 400286: d8 18 fcomps (%rax) 400288: 12 22 adc (%rdx),%ah 40028a: 19 de sbb %ebx,%esi 40028c: 88 98 7d 23 64 0b mov %bl,0xb64237d(%rax) 400292: 1e (bad) 400293: 36 4b 86 fe ss rex.WXB xchg %dil,%r14b 400297: e5 .byte 0xe5 Desensamblado de la sección .gnu.hash: 0000000000400298 <.gnu.hash>: 400298: 01 00 add %eax,(%rax) 40029a: 00 00 add %al,(%rax) 40029c: 01 00 add %eax,(%rax) 40029e: 00 00 add %al,(%rax) 4002a0: 01 00 add %eax,(%rax) ... Desensamblado de la sección .dynsym: 00000000004002b8 <.dynsym>: ... 4002d0: 0b 00 or (%rax),%eax 4002d2: 00 00 add %al,(%rax) 4002d4: 12 00 adc (%rax),%al ... 4002e6: 00 00 add %al,(%rax) 4002e8: 10 00 adc %al,(%rax) 4002ea: 00 00 add %al,(%rax) 4002ec: 12 00 adc (%rax),%al ... 4002fe: 00 00 add %al,(%rax) 400300: 22 00 and (%rax),%al 400302: 00 00 add %al,(%rax) 400304: 20 00 and %al,(%rax) ... Desensamblado de la sección .dynstr: 0000000000400318 <.dynstr>: 400318: 00 6c 69 62 add %ch,0x62(%rcx,%rbp,2) 40031c: 63 2e movslq (%rsi),%ebp 40031e: 73 6f jae 40038f <_init-0x39> 400320: 2e 36 00 70 75 cs add %dh,%ss:0x75(%rax) 400325: 74 73 je 40039a <_init-0x2e> 400327: 00 5f 5f add %bl,0x5f(%rdi) 40032a: 6c insb (%dx),%es:(%rdi) 40032b: 69 62 63 5f 73 74 61 imul $0x6174735f,0x63(%rdx),%esp 400332: 72 74 jb 4003a8 <_init-0x20> 400334: 5f pop %rdi 400335: 6d insl (%dx),%es:(%rdi) 400336: 61 (bad) 400337: 69 6e 00 5f 5f 67 6d imul $0x6d675f5f,0x0(%rsi),%ebp 40033e: 6f outsl %ds:(%rsi),(%dx) 40033f: 6e outsb %ds:(%rsi),(%dx) 400340: 5f pop %rdi 400341: 73 74 jae 4003b7 <_init-0x11> 400343: 61 (bad) 400344: 72 74 jb 4003ba <_init-0xe> 400346: 5f pop %rdi 400347: 5f pop %rdi 400348: 00 47 4c add %al,0x4c(%rdi) 40034b: 49 rex.WB 40034c: 42 rex.X 40034d: 43 5f rex.XB pop %r15 40034f: 32 2e xor (%rsi),%ch 400351: 32 2e xor (%rsi),%ch 400353: 35 .byte 0x35 ... Desensamblado de la sección .gnu.version: 0000000000400356 <.gnu.version>: 400356: 00 00 add %al,(%rax) 400358: 02 00 add (%rax),%al 40035a: 02 00 add (%rax),%al ... Desensamblado de la sección .gnu.version_r: 0000000000400360 <.gnu.version_r>: 400360: 01 00 add %eax,(%rax) 400362: 01 00 add %eax,(%rax) 400364: 01 00 add %eax,(%rax) 400366: 00 00 add %al,(%rax) 400368: 10 00 adc %al,(%rax) 40036a: 00 00 add %al,(%rax) 40036c: 00 00 add %al,(%rax) 40036e: 00 00 add %al,(%rax) 400370: 75 1a jne 40038c <_init-0x3c> 400372: 69 09 00 00 02 00 imul $0x20000,(%rcx),%ecx 400378: 31 00 xor %eax,(%rax) 40037a: 00 00 add %al,(%rax) 40037c: 00 00 add %al,(%rax) ... Desensamblado de la sección .rela.dyn: 0000000000400380 <.rela.dyn>: 400380: f8 clc 400381: 0f 60 00 punpcklbw (%rax),%mm0 400384: 00 00 add %al,(%rax) 400386: 00 00 add %al,(%rax) 400388: 06 (bad) 400389: 00 00 add %al,(%rax) 40038b: 00 03 add %al,(%rbx) ... Desensamblado de la sección .rela.plt: 0000000000400398 <.rela.plt>: 400398: 18 10 sbb %dl,(%rax) 40039a: 60 (bad) 40039b: 00 00 add %al,(%rax) 40039d: 00 00 add %al,(%rax) 40039f: 00 07 add %al,(%rdi) 4003a1: 00 00 add %al,(%rax) 4003a3: 00 01 add %al,(%rcx) ... 4003ad: 00 00 add %al,(%rax) 4003af: 00 20 add %ah,(%rax) 4003b1: 10 60 00 adc %ah,0x0(%rax) 4003b4: 00 00 add %al,(%rax) 4003b6: 00 00 add %al,(%rax) 4003b8: 07 (bad) 4003b9: 00 00 add %al,(%rax) 4003bb: 00 02 add %al,(%rdx) ... Desensamblado de la sección .init: 00000000004003c8 <_init>: 4003c8: 48 83 ec 08 sub $0x8,%rsp 4003cc: 48 8b 05 25 0c 20 00 mov 0x200c25(%rip),%rax # 600ff8 <_DYNAMIC+0x1d0> 4003d3: 48 85 c0 test %rax,%rax 4003d6: 74 05 je 4003dd <_init+0x15> 4003d8: e8 43 00 00 00 callq 400420 <__libc_start_main@plt+0x10> 4003dd: 48 83 c4 08 add $0x8,%rsp 4003e1: c3 retq Desensamblado de la sección .plt: 00000000004003f0 <puts@plt-0x10>: 4003f0: ff 35 12 0c 20 00 pushq 0x200c12(%rip) # 601008 <_GLOBAL_OFFSET_TABLE_+0x8> 4003f6: ff 25 14 0c 20 00 jmpq *0x200c14(%rip) # 601010 <_GLOBAL_OFFSET_TABLE_+0x10> 4003fc: 0f 1f 40 00 nopl 0x0(%rax) 0000000000400400 <puts@plt>: 400400: ff 25 12 0c 20 00 jmpq *0x200c12(%rip) # 601018 <_GLOBAL_OFFSET_TABLE_+0x18> 400406: 68 00 00 00 00 pushq $0x0 40040b: e9 e0 ff ff ff jmpq 4003f0 <_init+0x28> 0000000000400410 <__libc_start_main@plt>: 400410: ff 25 0a 0c 20 00 jmpq *0x200c0a(%rip) # 601020 <_GLOBAL_OFFSET_TABLE_+0x20> 400416: 68 01 00 00 00 pushq $0x1 40041b: e9 d0 ff ff ff jmpq 4003f0 <_init+0x28> Desensamblado de la sección .plt.got: 0000000000400420 <.plt.got>: 400420: ff 25 d2 0b 20 00 jmpq *0x200bd2(%rip) # 600ff8 <_DYNAMIC+0x1d0> 400426: 66 90 xchg %ax,%ax Desensamblado de la sección .text: 0000000000400430 <_start>: 400430: 31 ed xor %ebp,%ebp 400432: 49 89 d1 mov %rdx,%r9 400435: 5e pop %rsi 400436: 48 89 e2 mov %rsp,%rdx 400439: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp 40043d: 50 push %rax 40043e: 54 push %rsp 40043f: 49 c7 c0 b0 05 40 00 mov $0x4005b0,%r8 400446: 48 c7 c1 40 05 40 00 mov $0x400540,%rcx 40044d: 48 c7 c7 26 05 40 00 mov $0x400526,%rdi 400454: e8 b7 ff ff ff callq 400410 <__libc_start_main@plt> 400459: f4 hlt 40045a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 0000000000400460 <deregister_tm_clones>: 400460: b8 3f 10 60 00 mov $0x60103f,%eax 400465: 55 push %rbp 400466: 48 2d 38 10 60 00 sub $0x601038,%rax 40046c: 48 83 f8 0e cmp $0xe,%rax 400470: 48 89 e5 mov %rsp,%rbp 400473: 76 1b jbe 400490 <deregister_tm_clones+0x30> 400475: b8 00 00 00 00 mov $0x0,%eax 40047a: 48 85 c0 test %rax,%rax 40047d: 74 11 je 400490 <deregister_tm_clones+0x30> 40047f: 5d pop %rbp 400480: bf 38 10 60 00 mov $0x601038,%edi 400485: ff e0 jmpq *%rax 400487: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 40048e: 00 00 400490: 5d pop %rbp 400491: c3 retq 400492: 0f 1f 40 00 nopl 0x0(%rax) 400496: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40049d: 00 00 00 00000000004004a0 <register_tm_clones>: 4004a0: be 38 10 60 00 mov $0x601038,%esi 4004a5: 55 push %rbp 4004a6: 48 81 ee 38 10 60 00 sub $0x601038,%rsi 4004ad: 48 c1 fe 03 sar $0x3,%rsi 4004b1: 48 89 e5 mov %rsp,%rbp 4004b4: 48 89 f0 mov %rsi,%rax 4004b7: 48 c1 e8 3f shr $0x3f,%rax 4004bb: 48 01 c6 add %rax,%rsi 4004be: 48 d1 fe sar %rsi 4004c1: 74 15 je 4004d8 <register_tm_clones+0x38> 4004c3: b8 00 00 00 00 mov $0x0,%eax 4004c8: 48 85 c0 test %rax,%rax 4004cb: 74 0b je 4004d8 <register_tm_clones+0x38> 4004cd: 5d pop %rbp 4004ce: bf 38 10 60 00 mov $0x601038,%edi 4004d3: ff e0 jmpq *%rax 4004d5: 0f 1f 00 nopl (%rax) 4004d8: 5d pop %rbp 4004d9: c3 retq 4004da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 00000000004004e0 <__do_global_dtors_aux>: 4004e0: 80 3d 51 0b 20 00 00 cmpb $0x0,0x200b51(%rip) # 601038 <__TMC_END__> 4004e7: 75 11 jne 4004fa <__do_global_dtors_aux+0x1a> 4004e9: 55 push %rbp 4004ea: 48 89 e5 mov %rsp,%rbp 4004ed: e8 6e ff ff ff callq 400460 <deregister_tm_clones> 4004f2: 5d pop %rbp 4004f3: c6 05 3e 0b 20 00 01 movb $0x1,0x200b3e(%rip) # 601038 <__TMC_END__> 4004fa: f3 c3 repz retq 4004fc: 0f 1f 40 00 nopl 0x0(%rax) 0000000000400500 <frame_dummy>: 400500: bf 20 0e 60 00 mov $0x600e20,%edi 400505: 48 83 3f 00 cmpq $0x0,(%rdi) 400509: 75 05 jne 400510 <frame_dummy+0x10> 40050b: eb 93 jmp 4004a0 <register_tm_clones> 40050d: 0f 1f 00 nopl (%rax) 400510: b8 00 00 00 00 mov $0x0,%eax 400515: 48 85 c0 test %rax,%rax 400518: 74 f1 je 40050b <frame_dummy+0xb> 40051a: 55 push %rbp 40051b: 48 89 e5 mov %rsp,%rbp 40051e: ff d0 callq *%rax 400520: 5d pop %rbp 400521: e9 7a ff ff ff jmpq 4004a0 <register_tm_clones> 0000000000400526 <main>: 400526: 55 push %rbp 400527: 48 89 e5 mov %rsp,%rbp 40052a: bf c4 05 40 00 mov $0x4005c4,%edi 40052f: e8 cc fe ff ff callq 400400 <puts@plt> 400534: b8 00 00 00 00 mov $0x0,%eax 400539: 5d pop %rbp 40053a: c3 retq 40053b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 0000000000400540 <__libc_csu_init>: 400540: 41 57 push %r15 400542: 41 56 push %r14 400544: 41 89 ff mov %edi,%r15d 400547: 41 55 push %r13 400549: 41 54 push %r12 40054b: 4c 8d 25 be 08 20 00 lea 0x2008be(%rip),%r12 # 600e10 <__frame_dummy_init_array_entry> 400552: 55 push %rbp 400553: 48 8d 2d be 08 20 00 lea 0x2008be(%rip),%rbp # 600e18 <__init_array_end> 40055a: 53 push %rbx 40055b: 49 89 f6 mov %rsi,%r14 40055e: 49 89 d5 mov %rdx,%r13 400561: 4c 29 e5 sub %r12,%rbp 400564: 48 83 ec 08 sub $0x8,%rsp 400568: 48 c1 fd 03 sar $0x3,%rbp 40056c: e8 57 fe ff ff callq 4003c8 <_init> 400571: 48 85 ed test %rbp,%rbp 400574: 74 20 je 400596 <__libc_csu_init+0x56> 400576: 31 db xor %ebx,%ebx 400578: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 40057f: 00 400580: 4c 89 ea mov %r13,%rdx 400583: 4c 89 f6 mov %r14,%rsi 400586: 44 89 ff mov %r15d,%edi 400589: 41 ff 14 dc callq *(%r12,%rbx,8) 40058d: 48 83 c3 01 add $0x1,%rbx 400591: 48 39 eb cmp %rbp,%rbx 400594: 75 ea jne 400580 <__libc_csu_init+0x40> 400596: 48 83 c4 08 add $0x8,%rsp 40059a: 5b pop %rbx 40059b: 5d pop %rbp 40059c: 41 5c pop %r12 40059e: 41 5d pop %r13 4005a0: 41 5e pop %r14 4005a2: 41 5f pop %r15 4005a4: c3 retq 4005a5: 90 nop 4005a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 4005ad: 00 00 00 00000000004005b0 <__libc_csu_fini>: 4005b0: f3 c3 repz retq Desensamblado de la sección .fini: 00000000004005b4 <_fini>: 4005b4: 48 83 ec 08 sub $0x8,%rsp 4005b8: 48 83 c4 08 add $0x8,%rsp 4005bc: c3 retq Desensamblado de la sección .rodata: 00000000004005c0 <_IO_stdin_used>: 4005c0: 01 00 add %eax,(%rax) 4005c2: 02 00 add (%rax),%al 4005c4: 48 6f rex.W outsl %ds:(%rsi),(%dx) 4005c6: 6c insb (%dx),%es:(%rdi) 4005c7: 61 (bad) ... Desensamblado de la sección .eh_frame_hdr: 00000000004005cc <__GNU_EH_FRAME_HDR>: 4005cc: 01 1b add %ebx,(%rbx) 4005ce: 03 3b add (%rbx),%edi 4005d0: 30 00 xor %al,(%rax) 4005d2: 00 00 add %al,(%rax) 4005d4: 05 00 00 00 24 add $0x24000000,%eax 4005d9: fe (bad) 4005da: ff (bad) 4005db: ff (bad) 4005dc: 7c 00 jl 4005de <__GNU_EH_FRAME_HDR+0x12> 4005de: 00 00 add %al,(%rax) 4005e0: 64 fe fs (bad) 4005e2: ff (bad) 4005e3: ff 4c 00 00 decl 0x0(%rax,%rax,1) 4005e7: 00 5a ff add %bl,-0x1(%rdx) 4005ea: ff (bad) 4005eb: ff a4 00 00 00 74 ff jmpq *-0x8c0000(%rax,%rax,1) 4005f2: ff (bad) 4005f3: ff c4 inc %esp 4005f5: 00 00 add %al,(%rax) 4005f7: 00 e4 add %ah,%ah 4005f9: ff (bad) 4005fa: ff (bad) 4005fb: ff 0c 01 decl (%rcx,%rax,1) ... Desensamblado de la sección .eh_frame: 0000000000400600 <__FRAME_END__-0xf0>: 400600: 14 00 adc $0x0,%al 400602: 00 00 add %al,(%rax) 400604: 00 00 add %al,(%rax) 400606: 00 00 add %al,(%rax) 400608: 01 7a 52 add %edi,0x52(%rdx) 40060b: 00 01 add %al,(%rcx) 40060d: 78 10 js 40061f <__GNU_EH_FRAME_HDR+0x53> 40060f: 01 1b add %ebx,(%rbx) 400611: 0c 07 or $0x7,%al 400613: 08 90 01 07 10 14 or %dl,0x14100701(%rax) 400619: 00 00 add %al,(%rax) 40061b: 00 1c 00 add %bl,(%rax,%rax,1) 40061e: 00 00 add %al,(%rax) 400620: 10 fe adc %bh,%dh 400622: ff (bad) 400623: ff 2a ljmp *(%rdx) ... 40062d: 00 00 add %al,(%rax) 40062f: 00 14 00 add %dl,(%rax,%rax,1) 400632: 00 00 add %al,(%rax) 400634: 00 00 add %al,(%rax) 400636: 00 00 add %al,(%rax) 400638: 01 7a 52 add %edi,0x52(%rdx) 40063b: 00 01 add %al,(%rcx) 40063d: 78 10 js 40064f <__GNU_EH_FRAME_HDR+0x83> 40063f: 01 1b add %ebx,(%rbx) 400641: 0c 07 or $0x7,%al 400643: 08 90 01 00 00 24 or %dl,0x24000001(%rax) 400649: 00 00 add %al,(%rax) 40064b: 00 1c 00 add %bl,(%rax,%rax,1) 40064e: 00 00 add %al,(%rax) 400650: a0 fd ff ff 30 00 00 movabs 0x30fffffd,%al 400657: 00 00 400659: 0e (bad) 40065a: 10 46 0e adc %al,0xe(%rsi) 40065d: 18 4a 0f sbb %cl,0xf(%rdx) 400660: 0b 77 08 or 0x8(%rdi),%esi 400663: 80 00 3f addb $0x3f,(%rax) 400666: 1a 3b sbb (%rbx),%bh 400668: 2a 33 sub (%rbx),%dh 40066a: 24 22 and $0x22,%al 40066c: 00 00 add %al,(%rax) 40066e: 00 00 add %al,(%rax) 400670: 1c 00 sbb $0x0,%al 400672: 00 00 add %al,(%rax) 400674: 44 00 00 add %r8b,(%rax) 400677: 00 ae fe ff ff 15 add %ch,0x15fffffe(%rsi) 40067d: 00 00 add %al,(%rax) 40067f: 00 00 add %al,(%rax) 400681: 41 0e rex.B (bad) 400683: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) 400689: 50 push %rax 40068a: 0c 07 or $0x7,%al 40068c: 08 00 or %al,(%rax) 40068e: 00 00 add %al,(%rax) 400690: 44 00 00 add %r8b,(%rax) 400693: 00 64 00 00 add %ah,0x0(%rax,%rax,1) 400697: 00 a8 fe ff ff 65 add %ch,0x65fffffe(%rax) 40069d: 00 00 add %al,(%rax) 40069f: 00 00 add %al,(%rax) 4006a1: 42 0e rex.X (bad) 4006a3: 10 8f 02 42 0e 18 adc %cl,0x180e4202(%rdi) 4006a9: 8e 03 mov (%rbx),%es 4006ab: 45 0e rex.RB (bad) 4006ad: 20 8d 04 42 0e 28 and %cl,0x280e4204(%rbp) 4006b3: 8c 05 48 0e 30 86 mov %es,-0x79cff1b8(%rip) # ffffffff86701501 <_end+0xffffffff861004c1> 4006b9: 06 (bad) 4006ba: 48 0e rex.W (bad) 4006bc: 38 83 07 4d 0e 40 cmp %al,0x400e4d07(%rbx) 4006c2: 72 0e jb 4006d2 <__GNU_EH_FRAME_HDR+0x106> 4006c4: 38 41 0e cmp %al,0xe(%rcx) 4006c7: 30 41 0e xor %al,0xe(%rcx) 4006ca: 28 42 0e sub %al,0xe(%rdx) 4006cd: 20 42 0e and %al,0xe(%rdx) 4006d0: 18 42 0e sbb %al,0xe(%rdx) 4006d3: 10 42 0e adc %al,0xe(%rdx) 4006d6: 08 00 or %al,(%rax) 4006d8: 14 00 adc $0x0,%al 4006da: 00 00 add %al,(%rax) 4006dc: ac lods %ds:(%rsi),%al 4006dd: 00 00 add %al,(%rax) 4006df: 00 d0 add %dl,%al 4006e1: fe (bad) 4006e2: ff (bad) 4006e3: ff 02 incl (%rdx) ... 00000000004006f0 <__FRAME_END__>: 4006f0: 00 00 add %al,(%rax) ... Desensamblado de la sección .init_array: 0000000000600e10 <__frame_dummy_init_array_entry>: 600e10: 00 05 40 00 00 00 add %al,0x40(%rip) # 600e56 <_DYNAMIC+0x2e> ... Desensamblado de la sección .fini_array: 0000000000600e18 <__do_global_dtors_aux_fini_array_entry>: 600e18: e0 04 loopne 600e1e <__do_global_dtors_aux_fini_array_entry+0x6> 600e1a: 40 00 00 add %al,(%rax) 600e1d: 00 00 add %al,(%rax) ... Desensamblado de la sección .jcr: 0000000000600e20 <__JCR_END__>: ... Desensamblado de la sección .dynamic: 0000000000600e28 <_DYNAMIC>: 600e28: 01 00 add %eax,(%rax) 600e2a: 00 00 add %al,(%rax) 600e2c: 00 00 add %al,(%rax) 600e2e: 00 00 add %al,(%rax) 600e30: 01 00 add %eax,(%rax) 600e32: 00 00 add %al,(%rax) 600e34: 00 00 add %al,(%rax) 600e36: 00 00 add %al,(%rax) 600e38: 0c 00 or $0x0,%al 600e3a: 00 00 add %al,(%rax) 600e3c: 00 00 add %al,(%rax) 600e3e: 00 00 add %al,(%rax) 600e40: c8 03 40 00 enterq $0x4003,$0x0 600e44: 00 00 add %al,(%rax) 600e46: 00 00 add %al,(%rax) 600e48: 0d 00 00 00 00 or $0x0,%eax 600e4d: 00 00 add %al,(%rax) 600e4f: 00 b4 05 40 00 00 00 add %dh,0x40(%rbp,%rax,1) 600e56: 00 00 add %al,(%rax) 600e58: 19 00 sbb %eax,(%rax) 600e5a: 00 00 add %al,(%rax) 600e5c: 00 00 add %al,(%rax) 600e5e: 00 00 add %al,(%rax) 600e60: 10 0e adc %cl,(%rsi) 600e62: 60 (bad) 600e63: 00 00 add %al,(%rax) 600e65: 00 00 add %al,(%rax) 600e67: 00 1b add %bl,(%rbx) 600e69: 00 00 add %al,(%rax) 600e6b: 00 00 add %al,(%rax) 600e6d: 00 00 add %al,(%rax) 600e6f: 00 08 add %cl,(%rax) 600e71: 00 00 add %al,(%rax) 600e73: 00 00 add %al,(%rax) 600e75: 00 00 add %al,(%rax) 600e77: 00 1a add %bl,(%rdx) 600e79: 00 00 add %al,(%rax) 600e7b: 00 00 add %al,(%rax) 600e7d: 00 00 add %al,(%rax) 600e7f: 00 18 add %bl,(%rax) 600e81: 0e (bad) 600e82: 60 (bad) 600e83: 00 00 add %al,(%rax) 600e85: 00 00 add %al,(%rax) 600e87: 00 1c 00 add %bl,(%rax,%rax,1) 600e8a: 00 00 add %al,(%rax) 600e8c: 00 00 add %al,(%rax) 600e8e: 00 00 add %al,(%rax) 600e90: 08 00 or %al,(%rax) 600e92: 00 00 add %al,(%rax) 600e94: 00 00 add %al,(%rax) 600e96: 00 00 add %al,(%rax) 600e98: f5 cmc 600e99: fe (bad) 600e9a: ff 6f 00 ljmp *0x0(%rdi) 600e9d: 00 00 add %al,(%rax) 600e9f: 00 98 02 40 00 00 add %bl,0x4002(%rax) 600ea5: 00 00 add %al,(%rax) 600ea7: 00 05 00 00 00 00 add %al,0x0(%rip) # 600ead <_DYNAMIC+0x85> 600ead: 00 00 add %al,(%rax) 600eaf: 00 18 add %bl,(%rax) 600eb1: 03 40 00 add 0x0(%rax),%eax 600eb4: 00 00 add %al,(%rax) 600eb6: 00 00 add %al,(%rax) 600eb8: 06 (bad) 600eb9: 00 00 add %al,(%rax) 600ebb: 00 00 add %al,(%rax) 600ebd: 00 00 add %al,(%rax) 600ebf: 00 b8 02 40 00 00 add %bh,0x4002(%rax) 600ec5: 00 00 add %al,(%rax) 600ec7: 00 0a add %cl,(%rdx) 600ec9: 00 00 add %al,(%rax) 600ecb: 00 00 add %al,(%rax) 600ecd: 00 00 add %al,(%rax) 600ecf: 00 3d 00 00 00 00 add %bh,0x0(%rip) # 600ed5 <_DYNAMIC+0xad> 600ed5: 00 00 add %al,(%rax) 600ed7: 00 0b add %cl,(%rbx) 600ed9: 00 00 add %al,(%rax) 600edb: 00 00 add %al,(%rax) 600edd: 00 00 add %al,(%rax) 600edf: 00 18 add %bl,(%rax) 600ee1: 00 00 add %al,(%rax) 600ee3: 00 00 add %al,(%rax) 600ee5: 00 00 add %al,(%rax) 600ee7: 00 15 00 00 00 00 add %dl,0x0(%rip) # 600eed <_DYNAMIC+0xc5> ... 600ef5: 00 00 add %al,(%rax) 600ef7: 00 03 add %al,(%rbx) ... 600f01: 10 60 00 adc %ah,0x0(%rax) 600f04: 00 00 add %al,(%rax) 600f06: 00 00 add %al,(%rax) 600f08: 02 00 add (%rax),%al 600f0a: 00 00 add %al,(%rax) 600f0c: 00 00 add %al,(%rax) 600f0e: 00 00 add %al,(%rax) 600f10: 30 00 xor %al,(%rax) 600f12: 00 00 add %al,(%rax) 600f14: 00 00 add %al,(%rax) 600f16: 00 00 add %al,(%rax) 600f18: 14 00 adc $0x0,%al 600f1a: 00 00 add %al,(%rax) 600f1c: 00 00 add %al,(%rax) 600f1e: 00 00 add %al,(%rax) 600f20: 07 (bad) 600f21: 00 00 add %al,(%rax) 600f23: 00 00 add %al,(%rax) 600f25: 00 00 add %al,(%rax) 600f27: 00 17 add %dl,(%rdi) 600f29: 00 00 add %al,(%rax) 600f2b: 00 00 add %al,(%rax) 600f2d: 00 00 add %al,(%rax) 600f2f: 00 98 03 40 00 00 add %bl,0x4003(%rax) 600f35: 00 00 add %al,(%rax) 600f37: 00 07 add %al,(%rdi) 600f39: 00 00 add %al,(%rax) 600f3b: 00 00 add %al,(%rax) 600f3d: 00 00 add %al,(%rax) 600f3f: 00 80 03 40 00 00 add %al,0x4003(%rax) 600f45: 00 00 add %al,(%rax) 600f47: 00 08 add %cl,(%rax) 600f49: 00 00 add %al,(%rax) 600f4b: 00 00 add %al,(%rax) 600f4d: 00 00 add %al,(%rax) 600f4f: 00 18 add %bl,(%rax) 600f51: 00 00 add %al,(%rax) 600f53: 00 00 add %al,(%rax) 600f55: 00 00 add %al,(%rax) 600f57: 00 09 add %cl,(%rcx) 600f59: 00 00 add %al,(%rax) 600f5b: 00 00 add %al,(%rax) 600f5d: 00 00 add %al,(%rax) 600f5f: 00 18 add %bl,(%rax) 600f61: 00 00 add %al,(%rax) 600f63: 00 00 add %al,(%rax) 600f65: 00 00 add %al,(%rax) 600f67: 00 fe add %bh,%dh 600f69: ff (bad) 600f6a: ff 6f 00 ljmp *0x0(%rdi) 600f6d: 00 00 add %al,(%rax) 600f6f: 00 60 03 add %ah,0x3(%rax) 600f72: 40 00 00 add %al,(%rax) 600f75: 00 00 add %al,(%rax) 600f77: 00 ff add %bh,%bh 600f79: ff (bad) 600f7a: ff 6f 00 ljmp *0x0(%rdi) 600f7d: 00 00 add %al,(%rax) 600f7f: 00 01 add %al,(%rcx) 600f81: 00 00 add %al,(%rax) 600f83: 00 00 add %al,(%rax) 600f85: 00 00 add %al,(%rax) 600f87: 00 f0 add %dh,%al 600f89: ff (bad) 600f8a: ff 6f 00 ljmp *0x0(%rdi) 600f8d: 00 00 add %al,(%rax) 600f8f: 00 56 03 add %dl,0x3(%rsi) 600f92: 40 00 00 add %al,(%rax) ... Desensamblado de la sección .got: 0000000000600ff8 <.got>: ... Desensamblado de la sección .got.plt: 0000000000601000 <_GLOBAL_OFFSET_TABLE_>: 601000: 28 0e sub %cl,(%rsi) 601002: 60 (bad) ... 601017: 00 06 add %al,(%rsi) 601019: 04 40 add $0x40,%al 60101b: 00 00 add %al,(%rax) 60101d: 00 00 add %al,(%rax) 60101f: 00 16 add %dl,(%rsi) 601021: 04 40 add $0x40,%al 601023: 00 00 add %al,(%rax) 601025: 00 00 add %al,(%rax) ... Desensamblado de la sección .data: 0000000000601028 <__data_start>: ... 0000000000601030 <__dso_handle>: ... Desensamblado de la sección .bss: 0000000000601038 <__bss_start>: ... Desensamblado de la sección .comment: 0000000000000000 <.comment>: 0: 47 rex.RXB 1: 43 rex.XB 2: 43 3a 20 rex.XB cmp (%r8),%spl 5: 28 55 62 sub %dl,0x62(%rbp) 8: 75 6e jne 78 <_init-0x400350> a: 74 75 je 81 <_init-0x400347> c: 20 35 2e 34 2e 30 and %dh,0x302e342e(%rip) # 302e3440 <_end+0x2fce2400> 12: 2d 36 75 62 75 sub $0x75627536,%eax 17: 6e outsb %ds:(%rsi),(%dx) 18: 74 75 je 8f <_init-0x400339> 1a: 31 7e 31 xor %edi,0x31(%rsi) 1d: 36 2e 30 34 2e ss xor %dh,%cs:(%rsi,%rbp,1) 22: 31 31 xor %esi,(%rcx) 24: 29 20 sub %esp,(%rax) 26: 35 2e 34 2e 30 xor $0x302e342e,%eax 2b: 20 32 and %dh,(%rdx) 2d: 30 31 xor %dh,(%rcx) 2f: 36 30 36 xor %dh,%ss:(%rsi) 32: 30 39 xor %bh,(%rcx) ...
Con hexdump puedes obtener algo similar:
hexdump -C hola
Con el resultado más aproximado de lo que estaría cargado en memoria… (¡Repito! No quiero que entiendas todo esta cantidad de datos, solo que comprendas cómo funciona una computadora):
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| 00000010 02 00 3e 00 01 00 00 00 30 04 40 00 00 00 00 00 |..>.....0.@.....| 00000020 40 00 00 00 00 00 00 00 d8 19 00 00 00 00 00 00 |@...............| 00000030 00 00 00 00 40 00 38 00 09 00 40 00 1f 00 1c 00 |....@.8...@.....| 00000040 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00 |........@.......| 00000050 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00 |@.@.....@.@.....| 00000060 f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00 |................| 00000070 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 |................| 00000080 38 02 00 00 00 00 00 00 38 02 40 00 00 00 00 00 |8.......8.@.....| 00000090 38 02 40 00 00 00 00 00 1c 00 00 00 00 00 00 00 |8.@.............| 000000a0 1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 000000b0 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 |................| 000000c0 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00 |..@.......@.....| 000000d0 f4 06 00 00 00 00 00 00 f4 06 00 00 00 00 00 00 |................| 000000e0 00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00 |.. .............| 000000f0 10 0e 00 00 00 00 00 00 10 0e 60 00 00 00 00 00 |..........`.....| 00000100 10 0e 60 00 00 00 00 00 28 02 00 00 00 00 00 00 |..`.....(.......| 00000110 30 02 00 00 00 00 00 00 00 00 20 00 00 00 00 00 |0......... .....| 00000120 02 00 00 00 06 00 00 00 28 0e 00 00 00 00 00 00 |........(.......| 00000130 28 0e 60 00 00 00 00 00 28 0e 60 00 00 00 00 00 |(.`.....(.`.....| 00000140 d0 01 00 00 00 00 00 00 d0 01 00 00 00 00 00 00 |................| 00000150 08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00 |................| 00000160 54 02 00 00 00 00 00 00 54 02 40 00 00 00 00 00 |T.......T.@.....| 00000170 54 02 40 00 00 00 00 00 44 00 00 00 00 00 00 00 |T.@.....D.......| 00000180 44 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |D...............| 00000190 50 e5 74 64 04 00 00 00 cc 05 00 00 00 00 00 00 |P.td............| 000001a0 cc 05 40 00 00 00 00 00 cc 05 40 00 00 00 00 00 |..@.......@.....| 000001b0 34 00 00 00 00 00 00 00 34 00 00 00 00 00 00 00 |4.......4.......| 000001c0 04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00 |........Q.td....| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................| 00000200 52 e5 74 64 04 00 00 00 10 0e 00 00 00 00 00 00 |R.td............| 00000210 10 0e 60 00 00 00 00 00 10 0e 60 00 00 00 00 00 |..`.......`.....| 00000220 f0 01 00 00 00 00 00 00 f0 01 00 00 00 00 00 00 |................| 00000230 01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c |......../lib64/l| 00000240 64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73 |d-linux-x86-64.s| 00000250 6f 2e 32 00 04 00 00 00 10 00 00 00 01 00 00 00 |o.2.............| 00000260 47 4e 55 00 00 00 00 00 02 00 00 00 06 00 00 00 |GNU.............| 00000270 20 00 00 00 04 00 00 00 14 00 00 00 03 00 00 00 | ...............| 00000280 47 4e 55 00 0f 61 d8 18 12 22 19 de 88 98 7d 23 |GNU..a..."....}#| 00000290 64 0b 1e 36 4b 86 fe e5 01 00 00 00 01 00 00 00 |d..6K...........| 000002a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000002b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000002d0 0b 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |................| 000002e0 00 00 00 00 00 00 00 00 10 00 00 00 12 00 00 00 |................| 000002f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000300 22 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 |"... ...........| 00000310 00 00 00 00 00 00 00 00 00 6c 69 62 63 2e 73 6f |.........libc.so| 00000320 2e 36 00 70 75 74 73 00 5f 5f 6c 69 62 63 5f 73 |.6.puts.__libc_s| 00000330 74 61 72 74 5f 6d 61 69 6e 00 5f 5f 67 6d 6f 6e |tart_main.__gmon| 00000340 5f 73 74 61 72 74 5f 5f 00 47 4c 49 42 43 5f 32 |_start__.GLIBC_2| 00000350 2e 32 2e 35 00 00 00 00 02 00 02 00 00 00 00 00 |.2.5............| 00000360 01 00 01 00 01 00 00 00 10 00 00 00 00 00 00 00 |................| 00000370 75 1a 69 09 00 00 02 00 31 00 00 00 00 00 00 00 |u.i.....1.......| 00000380 f8 0f 60 00 00 00 00 00 06 00 00 00 03 00 00 00 |..`.............| 00000390 00 00 00 00 00 00 00 00 18 10 60 00 00 00 00 00 |..........`.....| 000003a0 07 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................| 000003b0 20 10 60 00 00 00 00 00 07 00 00 00 02 00 00 00 | .`.............| 000003c0 00 00 00 00 00 00 00 00 48 83 ec 08 48 8b 05 25 |........H...H..%| 000003d0 0c 20 00 48 85 c0 74 05 e8 43 00 00 00 48 83 c4 |. .H..t..C...H..| 000003e0 08 c3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000003f0 ff 35 12 0c 20 00 ff 25 14 0c 20 00 0f 1f 40 00 |.5.. ..%.. ...@.| 00000400 ff 25 12 0c 20 00 68 00 00 00 00 e9 e0 ff ff ff |.%.. .h.........| 00000410 ff 25 0a 0c 20 00 68 01 00 00 00 e9 d0 ff ff ff |.%.. .h.........| 00000420 ff 25 d2 0b 20 00 66 90 00 00 00 00 00 00 00 00 |.%.. .f.........| 00000430 31 ed 49 89 d1 5e 48 89 e2 48 83 e4 f0 50 54 49 |1.I..^H..H...PTI| 00000440 c7 c0 b0 05 40 00 48 c7 c1 40 05 40 00 48 c7 c7 |....@.H..@.@.H..| 00000450 26 05 40 00 e8 b7 ff ff ff f4 66 0f 1f 44 00 00 |&.@.......f..D..| 00000460 b8 3f 10 60 00 55 48 2d 38 10 60 00 48 83 f8 0e |.?.`.UH-8.`.H...| 00000470 48 89 e5 76 1b b8 00 00 00 00 48 85 c0 74 11 5d |H..v......H..t.]| 00000480 bf 38 10 60 00 ff e0 66 0f 1f 84 00 00 00 00 00 |.8.`...f........| 00000490 5d c3 0f 1f 40 00 66 2e 0f 1f 84 00 00 00 00 00 |]...@.f.........| 000004a0 be 38 10 60 00 55 48 81 ee 38 10 60 00 48 c1 fe |.8.`.UH..8.`.H..| 000004b0 03 48 89 e5 48 89 f0 48 c1 e8 3f 48 01 c6 48 d1 |.H..H..H..?H..H.| 000004c0 fe 74 15 b8 00 00 00 00 48 85 c0 74 0b 5d bf 38 |.t......H..t.].8| 000004d0 10 60 00 ff e0 0f 1f 00 5d c3 66 0f 1f 44 00 00 |.`......].f..D..| 000004e0 80 3d 51 0b 20 00 00 75 11 55 48 89 e5 e8 6e ff |.=Q. ..u.UH...n.| 000004f0 ff ff 5d c6 05 3e 0b 20 00 01 f3 c3 0f 1f 40 00 |..]..>. ......@.| 00000500 bf 20 0e 60 00 48 83 3f 00 75 05 eb 93 0f 1f 00 |. .`.H.?.u......| 00000510 b8 00 00 00 00 48 85 c0 74 f1 55 48 89 e5 ff d0 |.....H..t.UH....| 00000520 5d e9 7a ff ff ff 55 48 89 e5 bf c4 05 40 00 e8 |].z...UH.....@..| 00000530 cc fe ff ff b8 00 00 00 00 5d c3 0f 1f 44 00 00 |.........]...D..| 00000540 41 57 41 56 41 89 ff 41 55 41 54 4c 8d 25 be 08 |AWAVA..AUATL.%..| 00000550 20 00 55 48 8d 2d be 08 20 00 53 49 89 f6 49 89 | .UH.-.. .SI..I.| 00000560 d5 4c 29 e5 48 83 ec 08 48 c1 fd 03 e8 57 fe ff |.L).H...H....W..| 00000570 ff 48 85 ed 74 20 31 db 0f 1f 84 00 00 00 00 00 |.H..t 1.........| 00000580 4c 89 ea 4c 89 f6 44 89 ff 41 ff 14 dc 48 83 c3 |L..L..D..A...H..| 00000590 01 48 39 eb 75 ea 48 83 c4 08 5b 5d 41 5c 41 5d |.H9.u.H...[]A\A]| 000005a0 41 5e 41 5f c3 90 66 2e 0f 1f 84 00 00 00 00 00 |A^A_..f.........| 000005b0 f3 c3 00 00 48 83 ec 08 48 83 c4 08 c3 00 00 00 |....H...H.......| 000005c0 01 00 02 00 48 6f 6c 61 00 00 00 00 01 1b 03 3b |....Hola.......;| 000005d0 30 00 00 00 05 00 00 00 24 fe ff ff 7c 00 00 00 |0.......$...|...| 000005e0 64 fe ff ff 4c 00 00 00 5a ff ff ff a4 00 00 00 |d...L...Z.......| 000005f0 74 ff ff ff c4 00 00 00 e4 ff ff ff 0c 01 00 00 |t...............| 00000600 14 00 00 00 00 00 00 00 01 7a 52 00 01 78 10 01 |.........zR..x..| 00000610 1b 0c 07 08 90 01 07 10 14 00 00 00 1c 00 00 00 |................| 00000620 10 fe ff ff 2a 00 00 00 00 00 00 00 00 00 00 00 |....*...........| 00000630 14 00 00 00 00 00 00 00 01 7a 52 00 01 78 10 01 |.........zR..x..| 00000640 1b 0c 07 08 90 01 00 00 24 00 00 00 1c 00 00 00 |........$.......| 00000650 a0 fd ff ff 30 00 00 00 00 0e 10 46 0e 18 4a 0f |....0......F..J.| 00000660 0b 77 08 80 00 3f 1a 3b 2a 33 24 22 00 00 00 00 |.w...?.;*3$"....| 00000670 1c 00 00 00 44 00 00 00 ae fe ff ff 15 00 00 00 |....D...........| 00000680 00 41 0e 10 86 02 43 0d 06 50 0c 07 08 00 00 00 |.A....C..P......| 00000690 44 00 00 00 64 00 00 00 a8 fe ff ff 65 00 00 00 |D...d.......e...| 000006a0 00 42 0e 10 8f 02 42 0e 18 8e 03 45 0e 20 8d 04 |.B....B....E. ..| 000006b0 42 0e 28 8c 05 48 0e 30 86 06 48 0e 38 83 07 4d |B.(..H.0..H.8..M| 000006c0 0e 40 72 0e 38 41 0e 30 41 0e 28 42 0e 20 42 0e |.@r.8A.0A.(B. B.| 000006d0 18 42 0e 10 42 0e 08 00 14 00 00 00 ac 00 00 00 |.B..B...........| 000006e0 d0 fe ff ff 02 00 00 00 00 00 00 00 00 00 00 00 |................| 000006f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000e10 00 05 40 00 00 00 00 00 e0 04 40 00 00 00 00 00 |..@.......@.....| 00000e20 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 00000e30 01 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00 |................| 00000e40 c8 03 40 00 00 00 00 00 0d 00 00 00 00 00 00 00 |..@.............| 00000e50 b4 05 40 00 00 00 00 00 19 00 00 00 00 00 00 00 |..@.............| 00000e60 10 0e 60 00 00 00 00 00 1b 00 00 00 00 00 00 00 |..`.............| 00000e70 08 00 00 00 00 00 00 00 1a 00 00 00 00 00 00 00 |................| 00000e80 18 0e 60 00 00 00 00 00 1c 00 00 00 00 00 00 00 |..`.............| 00000e90 08 00 00 00 00 00 00 00 f5 fe ff 6f 00 00 00 00 |...........o....| 00000ea0 98 02 40 00 00 00 00 00 05 00 00 00 00 00 00 00 |..@.............| 00000eb0 18 03 40 00 00 00 00 00 06 00 00 00 00 00 00 00 |..@.............| 00000ec0 b8 02 40 00 00 00 00 00 0a 00 00 00 00 00 00 00 |..@.............| 00000ed0 3d 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 |=...............| 00000ee0 18 00 00 00 00 00 00 00 15 00 00 00 00 00 00 00 |................| 00000ef0 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 |................| 00000f00 00 10 60 00 00 00 00 00 02 00 00 00 00 00 00 00 |..`.............| 00000f10 30 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 |0...............| 00000f20 07 00 00 00 00 00 00 00 17 00 00 00 00 00 00 00 |................| 00000f30 98 03 40 00 00 00 00 00 07 00 00 00 00 00 00 00 |..@.............| 00000f40 80 03 40 00 00 00 00 00 08 00 00 00 00 00 00 00 |..@.............| 00000f50 18 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 |................| 00000f60 18 00 00 00 00 00 00 00 fe ff ff 6f 00 00 00 00 |...........o....| 00000f70 60 03 40 00 00 00 00 00 ff ff ff 6f 00 00 00 00 |`.@........o....| 00000f80 01 00 00 00 00 00 00 00 f0 ff ff 6f 00 00 00 00 |...........o....| 00000f90 56 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |V.@.............| 00000fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00001000 28 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |(.`.............| 00001010 00 00 00 00 00 00 00 00 06 04 40 00 00 00 00 00 |..........@.....| 00001020 16 04 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 00001030 00 00 00 00 00 00 00 00 47 43 43 3a 20 28 55 62 |........GCC: (Ub| 00001040 75 6e 74 75 20 35 2e 34 2e 30 2d 36 75 62 75 6e |untu 5.4.0-6ubun| 00001050 74 75 31 7e 31 36 2e 30 34 2e 31 31 29 20 35 2e |tu1~16.04.11) 5.| 00001060 34 2e 30 20 32 30 31 36 30 36 30 39 00 00 00 00 |4.0 20160609....| 00001070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00001080 00 00 00 00 00 00 00 00 00 00 00 00 03 00 01 00 |................| 00001090 38 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |8.@.............| 000010a0 00 00 00 00 03 00 02 00 54 02 40 00 00 00 00 00 |........T.@.....| 000010b0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 |................| 000010c0 74 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |t.@.............| 000010d0 00 00 00 00 03 00 04 00 98 02 40 00 00 00 00 00 |..........@.....| 000010e0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 05 00 |................| 000010f0 b8 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 00001100 00 00 00 00 03 00 06 00 18 03 40 00 00 00 00 00 |..........@.....| 00001110 00 00 00 00 00 00 00 00 00 00 00 00 03 00 07 00 |................| 00001120 56 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |V.@.............| 00001130 00 00 00 00 03 00 08 00 60 03 40 00 00 00 00 00 |........`.@.....| 00001140 00 00 00 00 00 00 00 00 00 00 00 00 03 00 09 00 |................| 00001150 80 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 00001160 00 00 00 00 03 00 0a 00 98 03 40 00 00 00 00 00 |..........@.....| 00001170 00 00 00 00 00 00 00 00 00 00 00 00 03 00 0b 00 |................| 00001180 c8 03 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 00001190 00 00 00 00 03 00 0c 00 f0 03 40 00 00 00 00 00 |..........@.....| 000011a0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 0d 00 |................| 000011b0 20 04 40 00 00 00 00 00 00 00 00 00 00 00 00 00 | .@.............| 000011c0 00 00 00 00 03 00 0e 00 30 04 40 00 00 00 00 00 |........0.@.....| 000011d0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 0f 00 |................| 000011e0 b4 05 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 000011f0 00 00 00 00 03 00 10 00 c0 05 40 00 00 00 00 00 |..........@.....| 00001200 00 00 00 00 00 00 00 00 00 00 00 00 03 00 11 00 |................| 00001210 cc 05 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 00001220 00 00 00 00 03 00 12 00 00 06 40 00 00 00 00 00 |..........@.....| 00001230 00 00 00 00 00 00 00 00 00 00 00 00 03 00 13 00 |................| 00001240 10 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |..`.............| 00001250 00 00 00 00 03 00 14 00 18 0e 60 00 00 00 00 00 |..........`.....| 00001260 00 00 00 00 00 00 00 00 00 00 00 00 03 00 15 00 |................| 00001270 20 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00 | .`.............| 00001280 00 00 00 00 03 00 16 00 28 0e 60 00 00 00 00 00 |........(.`.....| 00001290 00 00 00 00 00 00 00 00 00 00 00 00 03 00 17 00 |................| 000012a0 f8 0f 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |..`.............| 000012b0 00 00 00 00 03 00 18 00 00 10 60 00 00 00 00 00 |..........`.....| 000012c0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 19 00 |................| 000012d0 28 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |(.`.............| 000012e0 00 00 00 00 03 00 1a 00 38 10 60 00 00 00 00 00 |........8.`.....| 000012f0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 1b 00 |................| 00001300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00001310 01 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00 |................| 00001320 00 00 00 00 00 00 00 00 0c 00 00 00 01 00 15 00 |................| 00001330 20 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00 | .`.............| 00001340 19 00 00 00 02 00 0e 00 60 04 40 00 00 00 00 00 |........`.@.....| 00001350 00 00 00 00 00 00 00 00 1b 00 00 00 02 00 0e 00 |................| 00001360 a0 04 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 00001370 2e 00 00 00 02 00 0e 00 e0 04 40 00 00 00 00 00 |..........@.....| 00001380 00 00 00 00 00 00 00 00 44 00 00 00 01 00 1a 00 |........D.......| 00001390 38 10 60 00 00 00 00 00 01 00 00 00 00 00 00 00 |8.`.............| 000013a0 53 00 00 00 01 00 14 00 18 0e 60 00 00 00 00 00 |S.........`.....| 000013b0 00 00 00 00 00 00 00 00 7a 00 00 00 02 00 0e 00 |........z.......| 000013c0 00 05 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 000013d0 86 00 00 00 01 00 13 00 10 0e 60 00 00 00 00 00 |..........`.....| 000013e0 00 00 00 00 00 00 00 00 a5 00 00 00 04 00 f1 ff |................| 000013f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00001400 01 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00 |................| 00001410 00 00 00 00 00 00 00 00 ac 00 00 00 01 00 12 00 |................| 00001420 f0 06 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 00001430 ba 00 00 00 01 00 15 00 20 0e 60 00 00 00 00 00 |........ .`.....| 00001440 00 00 00 00 00 00 00 00 00 00 00 00 04 00 f1 ff |................| 00001450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00001460 c6 00 00 00 00 00 13 00 18 0e 60 00 00 00 00 00 |..........`.....| 00001470 00 00 00 00 00 00 00 00 d7 00 00 00 01 00 16 00 |................| 00001480 28 0e 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |(.`.............| 00001490 e0 00 00 00 00 00 13 00 10 0e 60 00 00 00 00 00 |..........`.....| 000014a0 00 00 00 00 00 00 00 00 f3 00 00 00 00 00 11 00 |................| 000014b0 cc 05 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |..@.............| 000014c0 06 01 00 00 01 00 18 00 00 10 60 00 00 00 00 00 |..........`.....| 000014d0 00 00 00 00 00 00 00 00 1c 01 00 00 12 00 0e 00 |................| 000014e0 b0 05 40 00 00 00 00 00 02 00 00 00 00 00 00 00 |..@.............| 000014f0 2c 01 00 00 20 00 00 00 00 00 00 00 00 00 00 00 |,... ...........| 00001500 00 00 00 00 00 00 00 00 82 01 00 00 20 00 19 00 |............ ...| 00001510 28 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |(.`.............| 00001520 48 01 00 00 12 00 00 00 00 00 00 00 00 00 00 00 |H...............| 00001530 00 00 00 00 00 00 00 00 5a 01 00 00 10 00 19 00 |........Z.......| 00001540 38 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |8.`.............| 00001550 26 01 00 00 12 00 0f 00 b4 05 40 00 00 00 00 00 |&.........@.....| 00001560 00 00 00 00 00 00 00 00 61 01 00 00 12 00 00 00 |........a.......| 00001570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00001580 80 01 00 00 10 00 19 00 28 10 60 00 00 00 00 00 |........(.`.....| 00001590 00 00 00 00 00 00 00 00 8d 01 00 00 20 00 00 00 |............ ...| 000015a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000015b0 9c 01 00 00 11 02 19 00 30 10 60 00 00 00 00 00 |........0.`.....| 000015c0 00 00 00 00 00 00 00 00 a9 01 00 00 11 00 10 00 |................| 000015d0 c0 05 40 00 00 00 00 00 04 00 00 00 00 00 00 00 |..@.............| 000015e0 b8 01 00 00 12 00 0e 00 40 05 40 00 00 00 00 00 |........@.@.....| 000015f0 65 00 00 00 00 00 00 00 d2 00 00 00 10 00 1a 00 |e...............| 00001600 40 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |@.`.............| 00001610 86 01 00 00 12 00 0e 00 30 04 40 00 00 00 00 00 |........0.@.....| 00001620 2a 00 00 00 00 00 00 00 c8 01 00 00 10 00 1a 00 |*...............| 00001630 38 10 60 00 00 00 00 00 00 00 00 00 00 00 00 00 |8.`.............| 00001640 d4 01 00 00 12 00 0e 00 26 05 40 00 00 00 00 00 |........&.@.....| 00001650 15 00 00 00 00 00 00 00 d9 01 00 00 20 00 00 00 |............ ...| 00001660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00001670 ed 01 00 00 11 02 19 00 38 10 60 00 00 00 00 00 |........8.`.....| 00001680 00 00 00 00 00 00 00 00 f9 01 00 00 20 00 00 00 |............ ...| 00001690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000016a0 c2 01 00 00 12 00 0b 00 c8 03 40 00 00 00 00 00 |..........@.....| 000016b0 00 00 00 00 00 00 00 00 00 63 72 74 73 74 75 66 |.........crtstuf| 000016c0 66 2e 63 00 5f 5f 4a 43 52 5f 4c 49 53 54 5f 5f |f.c.__JCR_LIST__| 000016d0 00 64 65 72 65 67 69 73 74 65 72 5f 74 6d 5f 63 |.deregister_tm_c| 000016e0 6c 6f 6e 65 73 00 5f 5f 64 6f 5f 67 6c 6f 62 61 |lones.__do_globa| 000016f0 6c 5f 64 74 6f 72 73 5f 61 75 78 00 63 6f 6d 70 |l_dtors_aux.comp| 00001700 6c 65 74 65 64 2e 37 35 39 34 00 5f 5f 64 6f 5f |leted.7594.__do_| 00001710 67 6c 6f 62 61 6c 5f 64 74 6f 72 73 5f 61 75 78 |global_dtors_aux| 00001720 5f 66 69 6e 69 5f 61 72 72 61 79 5f 65 6e 74 72 |_fini_array_entr| 00001730 79 00 66 72 61 6d 65 5f 64 75 6d 6d 79 00 5f 5f |y.frame_dummy.__| 00001740 66 72 61 6d 65 5f 64 75 6d 6d 79 5f 69 6e 69 74 |frame_dummy_init| 00001750 5f 61 72 72 61 79 5f 65 6e 74 72 79 00 68 6f 6c |_array_entry.hol| 00001760 61 2e 63 00 5f 5f 46 52 41 4d 45 5f 45 4e 44 5f |a.c.__FRAME_END_| 00001770 5f 00 5f 5f 4a 43 52 5f 45 4e 44 5f 5f 00 5f 5f |_.__JCR_END__.__| 00001780 69 6e 69 74 5f 61 72 72 61 79 5f 65 6e 64 00 5f |init_array_end._| 00001790 44 59 4e 41 4d 49 43 00 5f 5f 69 6e 69 74 5f 61 |DYNAMIC.__init_a| 000017a0 72 72 61 79 5f 73 74 61 72 74 00 5f 5f 47 4e 55 |rray_start.__GNU| 000017b0 5f 45 48 5f 46 52 41 4d 45 5f 48 44 52 00 5f 47 |_EH_FRAME_HDR._G| 000017c0 4c 4f 42 41 4c 5f 4f 46 46 53 45 54 5f 54 41 42 |LOBAL_OFFSET_TAB| 000017d0 4c 45 5f 00 5f 5f 6c 69 62 63 5f 63 73 75 5f 66 |LE_.__libc_csu_f| 000017e0 69 6e 69 00 5f 49 54 4d 5f 64 65 72 65 67 69 73 |ini._ITM_deregis| 000017f0 74 65 72 54 4d 43 6c 6f 6e 65 54 61 62 6c 65 00 |terTMCloneTable.| 00001800 70 75 74 73 40 40 47 4c 49 42 43 5f 32 2e 32 2e |puts@@GLIBC_2.2.| 00001810 35 00 5f 65 64 61 74 61 00 5f 5f 6c 69 62 63 5f |5._edata.__libc_| 00001820 73 74 61 72 74 5f 6d 61 69 6e 40 40 47 4c 49 42 |start_main@@GLIB| 00001830 43 5f 32 2e 32 2e 35 00 5f 5f 64 61 74 61 5f 73 |C_2.2.5.__data_s| 00001840 74 61 72 74 00 5f 5f 67 6d 6f 6e 5f 73 74 61 72 |tart.__gmon_star| 00001850 74 5f 5f 00 5f 5f 64 73 6f 5f 68 61 6e 64 6c 65 |t__.__dso_handle| 00001860 00 5f 49 4f 5f 73 74 64 69 6e 5f 75 73 65 64 00 |._IO_stdin_used.| 00001870 5f 5f 6c 69 62 63 5f 63 73 75 5f 69 6e 69 74 00 |__libc_csu_init.| 00001880 5f 5f 62 73 73 5f 73 74 61 72 74 00 6d 61 69 6e |__bss_start.main| 00001890 00 5f 4a 76 5f 52 65 67 69 73 74 65 72 43 6c 61 |._Jv_RegisterCla| 000018a0 73 73 65 73 00 5f 5f 54 4d 43 5f 45 4e 44 5f 5f |sses.__TMC_END__| 000018b0 00 5f 49 54 4d 5f 72 65 67 69 73 74 65 72 54 4d |._ITM_registerTM| 000018c0 43 6c 6f 6e 65 54 61 62 6c 65 00 00 2e 73 79 6d |CloneTable...sym| 000018d0 74 61 62 00 2e 73 74 72 74 61 62 00 2e 73 68 73 |tab..strtab..shs| 000018e0 74 72 74 61 62 00 2e 69 6e 74 65 72 70 00 2e 6e |trtab..interp..n| 000018f0 6f 74 65 2e 41 42 49 2d 74 61 67 00 2e 6e 6f 74 |ote.ABI-tag..not| 00001900 65 2e 67 6e 75 2e 62 75 69 6c 64 2d 69 64 00 2e |e.gnu.build-id..| 00001910 67 6e 75 2e 68 61 73 68 00 2e 64 79 6e 73 79 6d |gnu.hash..dynsym| 00001920 00 2e 64 79 6e 73 74 72 00 2e 67 6e 75 2e 76 65 |..dynstr..gnu.ve| 00001930 72 73 69 6f 6e 00 2e 67 6e 75 2e 76 65 72 73 69 |rsion..gnu.versi| 00001940 6f 6e 5f 72 00 2e 72 65 6c 61 2e 64 79 6e 00 2e |on_r..rela.dyn..| 00001950 72 65 6c 61 2e 70 6c 74 00 2e 69 6e 69 74 00 2e |rela.plt..init..| 00001960 70 6c 74 2e 67 6f 74 00 2e 74 65 78 74 00 2e 66 |plt.got..text..f| 00001970 69 6e 69 00 2e 72 6f 64 61 74 61 00 2e 65 68 5f |ini..rodata..eh_| 00001980 66 72 61 6d 65 5f 68 64 72 00 2e 65 68 5f 66 72 |frame_hdr..eh_fr| 00001990 61 6d 65 00 2e 69 6e 69 74 5f 61 72 72 61 79 00 |ame..init_array.| 000019a0 2e 66 69 6e 69 5f 61 72 72 61 79 00 2e 6a 63 72 |.fini_array..jcr| 000019b0 00 2e 64 79 6e 61 6d 69 63 00 2e 67 6f 74 2e 70 |..dynamic..got.p| 000019c0 6c 74 00 2e 64 61 74 61 00 2e 62 73 73 00 2e 63 |lt..data..bss..c| 000019d0 6f 6d 6d 65 6e 74 00 00 00 00 00 00 00 00 00 00 |omment..........| 000019e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00001a10 00 00 00 00 00 00 00 00 1b 00 00 00 01 00 00 00 |................| 00001a20 02 00 00 00 00 00 00 00 38 02 40 00 00 00 00 00 |........8.@.....| 00001a30 38 02 00 00 00 00 00 00 1c 00 00 00 00 00 00 00 |8...............| 00001a40 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 00001a50 00 00 00 00 00 00 00 00 23 00 00 00 07 00 00 00 |........#.......| 00001a60 02 00 00 00 00 00 00 00 54 02 40 00 00 00 00 00 |........T.@.....| 00001a70 54 02 00 00 00 00 00 00 20 00 00 00 00 00 00 00 |T....... .......| 00001a80 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................| 00001a90 00 00 00 00 00 00 00 00 31 00 00 00 07 00 00 00 |........1.......| 00001aa0 02 00 00 00 00 00 00 00 74 02 40 00 00 00 00 00 |........t.@.....| 00001ab0 74 02 00 00 00 00 00 00 24 00 00 00 00 00 00 00 |t.......$.......| 00001ac0 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................| 00001ad0 00 00 00 00 00 00 00 00 44 00 00 00 f6 ff ff 6f |........D......o| 00001ae0 02 00 00 00 00 00 00 00 98 02 40 00 00 00 00 00 |..........@.....| 00001af0 98 02 00 00 00 00 00 00 1c 00 00 00 00 00 00 00 |................| 00001b00 05 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001b10 00 00 00 00 00 00 00 00 4e 00 00 00 0b 00 00 00 |........N.......| 00001b20 02 00 00 00 00 00 00 00 b8 02 40 00 00 00 00 00 |..........@.....| 00001b30 b8 02 00 00 00 00 00 00 60 00 00 00 00 00 00 00 |........`.......| 00001b40 06 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00 |................| 00001b50 18 00 00 00 00 00 00 00 56 00 00 00 03 00 00 00 |........V.......| 00001b60 02 00 00 00 00 00 00 00 18 03 40 00 00 00 00 00 |..........@.....| 00001b70 18 03 00 00 00 00 00 00 3d 00 00 00 00 00 00 00 |........=.......| 00001b80 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 00001b90 00 00 00 00 00 00 00 00 5e 00 00 00 ff ff ff 6f |........^......o| 00001ba0 02 00 00 00 00 00 00 00 56 03 40 00 00 00 00 00 |........V.@.....| 00001bb0 56 03 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |V...............| 00001bc0 05 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 |................| 00001bd0 02 00 00 00 00 00 00 00 6b 00 00 00 fe ff ff 6f |........k......o| 00001be0 02 00 00 00 00 00 00 00 60 03 40 00 00 00 00 00 |........`.@.....| 00001bf0 60 03 00 00 00 00 00 00 20 00 00 00 00 00 00 00 |`....... .......| 00001c00 06 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00 |................| 00001c10 00 00 00 00 00 00 00 00 7a 00 00 00 04 00 00 00 |........z.......| 00001c20 02 00 00 00 00 00 00 00 80 03 40 00 00 00 00 00 |..........@.....| 00001c30 80 03 00 00 00 00 00 00 18 00 00 00 00 00 00 00 |................| 00001c40 05 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001c50 18 00 00 00 00 00 00 00 84 00 00 00 04 00 00 00 |................| 00001c60 42 00 00 00 00 00 00 00 98 03 40 00 00 00 00 00 |B.........@.....| 00001c70 98 03 00 00 00 00 00 00 30 00 00 00 00 00 00 00 |........0.......| 00001c80 05 00 00 00 18 00 00 00 08 00 00 00 00 00 00 00 |................| 00001c90 18 00 00 00 00 00 00 00 8e 00 00 00 01 00 00 00 |................| 00001ca0 06 00 00 00 00 00 00 00 c8 03 40 00 00 00 00 00 |..........@.....| 00001cb0 c8 03 00 00 00 00 00 00 1a 00 00 00 00 00 00 00 |................| 00001cc0 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................| 00001cd0 00 00 00 00 00 00 00 00 89 00 00 00 01 00 00 00 |................| 00001ce0 06 00 00 00 00 00 00 00 f0 03 40 00 00 00 00 00 |..........@.....| 00001cf0 f0 03 00 00 00 00 00 00 30 00 00 00 00 00 00 00 |........0.......| 00001d00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................| 00001d10 10 00 00 00 00 00 00 00 94 00 00 00 01 00 00 00 |................| 00001d20 06 00 00 00 00 00 00 00 20 04 40 00 00 00 00 00 |........ .@.....| 00001d30 20 04 00 00 00 00 00 00 08 00 00 00 00 00 00 00 | ...............| 00001d40 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001d50 00 00 00 00 00 00 00 00 9d 00 00 00 01 00 00 00 |................| 00001d60 06 00 00 00 00 00 00 00 30 04 40 00 00 00 00 00 |........0.@.....| 00001d70 30 04 00 00 00 00 00 00 82 01 00 00 00 00 00 00 |0...............| 00001d80 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................| 00001d90 00 00 00 00 00 00 00 00 a3 00 00 00 01 00 00 00 |................| 00001da0 06 00 00 00 00 00 00 00 b4 05 40 00 00 00 00 00 |..........@.....| 00001db0 b4 05 00 00 00 00 00 00 09 00 00 00 00 00 00 00 |................| 00001dc0 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................| 00001dd0 00 00 00 00 00 00 00 00 a9 00 00 00 01 00 00 00 |................| 00001de0 02 00 00 00 00 00 00 00 c0 05 40 00 00 00 00 00 |..........@.....| 00001df0 c0 05 00 00 00 00 00 00 09 00 00 00 00 00 00 00 |................| 00001e00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................| 00001e10 00 00 00 00 00 00 00 00 b1 00 00 00 01 00 00 00 |................| 00001e20 02 00 00 00 00 00 00 00 cc 05 40 00 00 00 00 00 |..........@.....| 00001e30 cc 05 00 00 00 00 00 00 34 00 00 00 00 00 00 00 |........4.......| 00001e40 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................| 00001e50 00 00 00 00 00 00 00 00 bf 00 00 00 01 00 00 00 |................| 00001e60 02 00 00 00 00 00 00 00 00 06 40 00 00 00 00 00 |..........@.....| 00001e70 00 06 00 00 00 00 00 00 f4 00 00 00 00 00 00 00 |................| 00001e80 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001e90 00 00 00 00 00 00 00 00 c9 00 00 00 0e 00 00 00 |................| 00001ea0 03 00 00 00 00 00 00 00 10 0e 60 00 00 00 00 00 |..........`.....| 00001eb0 10 0e 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001ec0 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001ed0 00 00 00 00 00 00 00 00 d5 00 00 00 0f 00 00 00 |................| 00001ee0 03 00 00 00 00 00 00 00 18 0e 60 00 00 00 00 00 |..........`.....| 00001ef0 18 0e 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001f00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001f10 00 00 00 00 00 00 00 00 e1 00 00 00 01 00 00 00 |................| 00001f20 03 00 00 00 00 00 00 00 20 0e 60 00 00 00 00 00 |........ .`.....| 00001f30 20 0e 00 00 00 00 00 00 08 00 00 00 00 00 00 00 | ...............| 00001f40 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001f50 00 00 00 00 00 00 00 00 e6 00 00 00 06 00 00 00 |................| 00001f60 03 00 00 00 00 00 00 00 28 0e 60 00 00 00 00 00 |........(.`.....| 00001f70 28 0e 00 00 00 00 00 00 d0 01 00 00 00 00 00 00 |(...............| 00001f80 06 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001f90 10 00 00 00 00 00 00 00 98 00 00 00 01 00 00 00 |................| 00001fa0 03 00 00 00 00 00 00 00 f8 0f 60 00 00 00 00 00 |..........`.....| 00001fb0 f8 0f 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001fc0 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00001fd0 08 00 00 00 00 00 00 00 ef 00 00 00 01 00 00 00 |................| 00001fe0 03 00 00 00 00 00 00 00 00 10 60 00 00 00 00 00 |..........`.....| 00001ff0 00 10 00 00 00 00 00 00 28 00 00 00 00 00 00 00 |........(.......| 00002000 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00002010 08 00 00 00 00 00 00 00 f8 00 00 00 01 00 00 00 |................| 00002020 03 00 00 00 00 00 00 00 28 10 60 00 00 00 00 00 |........(.`.....| 00002030 28 10 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |(...............| 00002040 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................| 00002050 00 00 00 00 00 00 00 00 fe 00 00 00 08 00 00 00 |................| 00002060 03 00 00 00 00 00 00 00 38 10 60 00 00 00 00 00 |........8.`.....| 00002070 38 10 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |8...............| 00002080 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 00002090 00 00 00 00 00 00 00 00 03 01 00 00 01 00 00 00 |................| 000020a0 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |0...............| 000020b0 38 10 00 00 00 00 00 00 35 00 00 00 00 00 00 00 |8.......5.......| 000020c0 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 000020d0 01 00 00 00 00 00 00 00 11 00 00 00 03 00 00 00 |................| 000020e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000020f0 cb 18 00 00 00 00 00 00 0c 01 00 00 00 00 00 00 |................| 00002100 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 00002110 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 |................| 00002120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00002130 70 10 00 00 00 00 00 00 48 06 00 00 00 00 00 00 |p.......H.......| 00002140 1e 00 00 00 2f 00 00 00 08 00 00 00 00 00 00 00 |..../...........| 00002150 18 00 00 00 00 00 00 00 09 00 00 00 03 00 00 00 |................| 00002160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00002170 b8 16 00 00 00 00 00 00 13 02 00 00 00 00 00 00 |................| 00002180 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| * 00002198
Recuerda que para los lenguajes interpretados es necesario un tipo de compilación conocido como JIT (Just-In-Time) o en tiempo de ejecución. Se trata de una traducción dinámica del script o código escrito en lenguaje interpretado (Java, Bash, Ruby, Python, Perl,…) a bytecode y luego a código máquina. Por ejemplo, cuando tienes un script para Bash será el propio Bash el que interprete las órdenes del script y genere las órdenes en código máquina. En el caso de Java, sería la máquina virtual de Java…
Pingback: Programación: datos y operaciones básicas | ArchiTecnologia
Pingback: viagra online
Pingback: Compatibilidad binaria entre sistemas *nix | ArchiTecnologia