typestar

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

  1. mov al, [src + rcx] y luego mov [dst + rcx], al.
  2. La copia aterriza en espacio .bss reservado con resb.
  3. Imprimir la copia prueba que los bytes se movieron.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 4 de 4 en Datos; paso 10 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →