Created
March 6, 2012 13:28
-
-
Save pepgonzalez/1986271 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
.LC0: #etiqueta | |
.string "Ingrese el elemento %d del arreglo:" #string | |
.LC1: #etiqueta | |
.string "%d" #string | |
.align 8 #guardado de datos | |
.LC2: #etiqueta | |
.string "\n\n Ingrese el numero que se va a buscar en el arreglo:" #string | |
.align 8 #guardado de datos | |
.LC3: #etiqueta | |
.string "\n\n El numero %d aparece %d veces" #string | |
.text #empiezan las instrucciones | |
.globl main #declarar main como global | |
.type main, @function #declarar main como funcion | |
main: #main | |
.LFB0: #etiqueta | |
pushq %rbp #copia registro al stack | |
movq %rsp, %rbp #cambio en direccion de rsp | |
subq $64, %rsp #se reservan bits | |
movl $0, -8(%rbp) #asigna cero a una parte del registro rbp | |
movl $0, -4(%rbp) #asigna cero a una parte del registro rbp | |
jmp .L2 #salta a etiqueta .L2 | |
.L3: #etiqueta | |
movl $.LC0, %eax #string se mueve al inicio de la pila | |
movl -4(%rbp), %edx #valor de -4 de rbp apunta a edx | |
movl %edx, %esi #movimiento de variables | |
movq %rax, %rdi #movimiento de variables | |
movl $0, %eax #asigna cero a eax | |
call printf #llama a impresion | |
movl -4(%rbp), %eax #valor de -4 de rbp a eax | |
leaq 0(,%rax,4), %rdx #carga direccion de rax a rdx | |
leaq -64(%rbp), %rax #carga direccion de -64 de rbp 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 variables | |
movl $0, %eax #asigna cero a eax | |
call __isoc99_scanf #llama a scanf | |
addl $1, -4(%rbp) #suma valor a rbp en -4 | |
.L2: #etiqueta | |
cmpl $10, -4(%rbp) #comparacion de variables | |
jle .L3 #salta a etiqueta .L3 | |
movl $.LC2, %eax #mueve contenido de .LC2 a eax | |
movq %rax, %rdi #movimiento de variables | |
movl $0, %eax #asigna cero a eax | |
call printf #llama a impresion | |
movl $.LC1, %eax #mueve contendio 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 #llama a scanf | |
movl $0, -4(%rbp) #asigna cero a una parte del registro de rbp | |
jmp .L4 #salta a .L4 | |
.L6: #etiqueta | |
movl -4(%rbp), %eax #rbp -4 apunta a eax | |
movl -64(%rbp,%rax,4), %edx #mueve valores a edx | |
movl -12(%rbp), %eax #rbp -12 apunta a eax | |
cmpl %eax, %edx #comparacion de valores | |
jne .L5 #salta .L5 | |
addl $1, -8(%rbp) #suma valor de rbp en -8 | |
.L5: #etuiqueta | |
addl $1, -4(%rbp) #suma valor de rbp en -4 | |
.L4: #etiqueta .L4 | |
cmpl $10, -4(%rbp) #comparacion de numeros | |
jle .L6 #salta a .L6 | |
movl -12(%rbp), %ecx #rbp -12 apunta a ecx | |
movl $.LC3, %eax #mueve contenido de .LC3 a eax | |
movl -8(%rbp), %edx #mueve el valor de rbp a edx | |
movl %ecx, %esi #comparacion de valores | |
movq %rax, %rdi #comparacion de valores | |
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 #funcion de retorno | |
leave #livera las variables |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment