typestar

cmov en Assembly

Elige un valor desde las banderas sin ramificar.

; cmov picks a value from flags without a branch.
        global _start

        section .text
_start:
        mov rax, 88             ; candidate a
        mov rbx, 19             ; candidate b

        cmp rax, rbx
        cmovl rax, rbx          ; if a < b, take b: branch-free min/max

        mov rdx, 100
        cmp rax, rdx
        cmovg rax, rdx          ; clamp to 100

        mov rdi, rax            ; max(88,19) clamped = 88
        mov rax, 60             ; exit code 88
        syscall

Cómo funciona

  1. cmovl mueve solo si la comparación dijo menor.
  2. Un segundo cmov recorta contra una cota superior.
  3. Min, max y clamp sin saltos tienen todos esta forma.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
404
Tokens
49
Ritmo de tres estrellas
55 tpm

Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 53 segundos.

Escribe este fragmento

Paso 4 de 4 en Bits y banderas; paso 18 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →