-
-
Save pepgonzalez/1986276 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.file "algo.c" #nombre del archivo | |
.section .rodata | |
.align 8 | |
.LC0: #etiqueta | |
.string "Ingrese el elemento %d del arreglo:" #definicion de string | |
.LC1: #etiqueta | |
.string "%d" #string | |
.align 8 #guardado de variables para 64 bits | |
.LC2: | |
.string "\n\n Ingrese el numero que se va a buscar en el arreglo:" #string | |
.align 8 #guardado de variables para 64 bits | |
.LC3: | |
.string "\n\n El numero %d aparece %d veces" #string | |
.text #empiezan instrucciones | |
.globl main #declarar main como global | |
.type main, @function #declarar main como funcion | |
main: #main | |
.LFB0: #etiqueta | |
.cfi_startproc #se utiliza al comienzo de funcion | |
pushq %rbp #copia registro al stack | |
.cfi_def_cfa_offset 16 #define reglas del calculo de funcion | |
movq %rsp, %rbp #cambio de direccion de rsp | |
.cfi_offset 6, -16 #guarda el valor anterior del registro | |
.cfi_def_cfa_register 6 #cambia las reglas de calculo de funcion | |
subq $64, %rsp #se reservan bits | |
movl $0, -8(%rbp) #asigna cero una parte del registro rbp | |
movl $0, -4(%rbp) | |
jmp .L2 #se va a la etiqueta .L2 | |
.L3: #etiquta | |
movl $.LC0, %eax #string se mueve al inicio de la pila | |
movl -4(%rbp), %edx #valor de -4 de rpb apunta a edx | |
movl %edx, %esi #movimiento de variables | |
movq %rax, %rdi #Movimiento de variables | |
movl $0, %eax #asigna cero a eax | |
call printf #imprime | |
movl -4(%rbp), %eax #mueve valor de rpb a eax | |
cltq #desplazamiento de puntero de 64 bits | |
leaq 0(,%rax,4), %rdx #carga direcciones de rax a rdx | |
leaq -64(%rbp), %rax #carga direccion de -64 de rpb a rax | |
leaq (%rax,%rdx), %rdx #multiplica rax y rdx y lo guarda en rdx | |
movl $.LC1, %eax #mueve contenido de .LC1 a eax | |
movq %rdx, %rsi #movimiento de variables | |
movq %rax, %rdi #movimiento de variable | |
movl $0, %eax #asigna cero a eax | |
call __isoc99_scanf #se llama el scanf | |
addl $1, -4(%rbp) #suma valor rbp en -4 | |
.L2: #etiqueta | |
cmpl $10, -4(%rbp) #comparacion de valores | |
jle .L3 #salta a la etuiqueta .L3 | |
movl $.LC2, %eax #mueve el contenido de .LC2 a eax | |
movq %rax, %rdi #movimiento de variables | |
movl $0, %eax #asigna cero a eax | |
call printf #se llama a impresion | |
movl $.LC1, %eax #mueve el contenido de .LC1 a eax | |
leaq -12(%rbp), %rdx #carga direccion de -12 de rbp a rdx | |
movq %rdx, %rsi #movimiento de variables | |
movq %rax, %rdi #movimiento de variables | |
movl $0, %eax #asigna cero a eax | |
call __isoc99_scanf #se llama a scanf | |
movl $0, -4(%rbp) #asigna cero rpb en -4 | |
jmp .L4 #salta a etuiqueta .L4 | |
.L6: #etiqueta | |
movl -4(%rbp), %eax #mueve el conetnido de rbp en -4 a eax | |
cltq #deplazamiento de puntero de 64 bits | |
movl -64(%rbp,%rax,4), %edx #valor de -64 de rbp y rax apuntan a edx | |
movl -12(%rbp), %eax #valor de -12 de rbp apunta eax | |
cmpl %eax, %edx #comparacion de variables | |
jne .L5 #salto a .L5 | |
addl $1, -8(%rbp) #asigna 1 a -8rbp | |
.L5: #etiqueta | |
addl $1, -4(%rbp) #asigna 1 a -4rbp | |
.L4: #etiqueta | |
cmpl $10, -4(%rbp) #comparacion de valores | |
jle .L6 #salto a etiqueta .L6 | |
movl -12(%rbp), %ecx #valor de -12 de rbp apunta a ecx | |
movl $.LC3, %eax #mueve el contenido de .LC3 a eax | |
movl -8(%rbp), %edx #mueve el contendio de rbp en -8 a edx | |
movl %ecx, %esi #comparacion de variables | |
movq %rax, %rdi #comparacion de variables | |
movl $0, %eax #asigna cero a eax | |
call printf #llama a impresion | |
movl $10, %edi #asigna el valor de 10 a edi | |
call putchar #llama al I/O | |
movl $0, %eax #asigna cero a eax | |
leave #libera variables locales | |
.cfi_def_cfa 7, 8 #registro de instrucciones y guardado | |
ret #regresa al control de SO | |
.cfi_endproc #fin del .cfi | |
.LFE0: #etiqueta | |
.size main, .-main parametros del SO | |
.ident "GCC: (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2" | |
.section .note.GNU-stack,"",@progbits | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment