Este codigo cuenta los bits prendido (en uno) de un entero, programado en Assembler, Sintaxys AT&T.
.data
s: .string "%d \n"
l: .long -1
.text
.global main
main:
movl $0,%ebx #ebx es nuestro contador
movl $0,%ecx #ecx es nuestro contador de ciclos
movl l,%eax #carga el long en memoria
rotador:
inc %ecx # i++
ror %eax # rota el eax
adc $0, %ebx # suma el carry
cmp $32,%ecx
jnz rotador
#jmp rotador
return:
pushl %ebx
pushl $s
call printf
addl $8, %esp
movl $0, %eax
ret
Podemos cambiar las siguientas lineas:
return:
pushl %ebx
pushl $s
call printf
por:
movl %ebx, %eax y podemos usar esta linea como una funcion
No hay comentarios:
Publicar un comentario