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
- Dos registros guardan el par; un tercero prepara la suma.
- La rotación a=b, b=siguiente avanza la secuencia.
- Diez pasos aterrizan en fib(10) = 55.
Palabras clave y builtins usados aquí
globalraxrbxrcxrdirdxsection
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.
Paso 4 de 4 en Memoria y strings; paso 25 de 31 en Fundamentos del lenguaje.