strlen a mano en Assembly
Camina los bytes hasta el terminador cero.
; Walk bytes until the zero terminator: strlen by hand.
global _start
section .data
name: db "workbench", 0
section .text
_start:
lea rsi, [name]
xor rcx, rcx
.scan:
cmp byte [rsi + rcx], 0
je .done
inc rcx
jmp .scan
.done:
mov rdi, rcx ; length 9
mov rax, 60 ; exit code 9
syscall
Cómo funciona
db "workbench", 0guarda el string y su terminador.cmp byte [rsi + rcx], 0lee un byte a la vez.- El conteo, 9, es el código de salida.
Palabras clave y builtins usados aquí
bytedbglobalraxrcxrdirsisection
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 308
- Tokens
- 50
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 55 segundos.
Paso 3 de 4 en Memoria y strings; paso 24 de 31 en Fundamentos del lenguaje.