memcpy a mano en Assembly
Carga un byte, guarda un byte, camina ambos punteros.
; memcpy by hand: load a byte, store a byte, walk both pointers.
global _start
section .data
src: db "relay", 10
SLEN: equ $ - src
section .bss
dst: resb SLEN
section .text
_start:
xor rcx, rcx
.copy:
mov al, [src + rcx]
mov [dst + rcx], al
inc rcx
cmp rcx, SLEN
jl .copy
mov rax, 1
mov rdi, 1
mov rsi, dst ; print the copy, not the original
mov rdx, SLEN
syscall
mov rax, 60
xor rdi, rdi
syscall
Cómo funciona
mov al, [src + rcx]y luegomov [dst + rcx], al.- La copia aterriza en espacio
.bssreservado con resb. - Imprimir la copia prueba que los bytes se movieron.
Palabras clave y builtins usados aquí
aldbglobalraxrcxrdirdxresbrsisection
El intento, en números
- Líneas
- 29
- Caracteres a escribir
- 420
- Tokens
- 78
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 85 segundos.
Paso 4 de 4 en Datos; paso 10 de 31 en Fundamentos del lenguaje.