Skip to content

Instantly share code, notes, and snippets.

@pepgonzalez
Created March 6, 2012 13:28
Show Gist options
  • Save pepgonzalez/1986271 to your computer and use it in GitHub Desktop.
Save pepgonzalez/1986271 to your computer and use it in GitHub Desktop.
.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