typestar

El baile de registros en Assembly

Fibonacci en tres registros, sin memoria alguna.

; Fibonacci in three registers: the classic register shuffle.
        global _start

        section .text
_start:
        xor rax, rax            ; fib(0)
        mov rbx, 1              ; fib(1)
        mov rcx, 10             ; steps to take
.step:
        mov rdx, rax
        add rdx, rbx            ; next = a + b
        mov rax, rbx            ; a = b
        mov rbx, rdx            ; b = next
        dec rcx
        jnz .step

        mov rdi, rax            ; fib(10) = 55
        mov rax, 60             ; exit code 55
        syscall

Cómo funciona

  1. Dos registros guardan el par; un tercero prepara la suma.
  2. La rotación a=b, b=siguiente avanza la secuencia.
  3. Diez pasos aterrizan en fib(10) = 55.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
435
Tokens
56
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 56 segundos.

Escribe este fragmento

Paso 4 de 4 en Memoria y strings; paso 25 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →