Cargas y almacenes en Assembly
byte, word, qword en memoria — y movzx para ensanchar limpio.
; Sizes matter at memory: byte, word, dword, qword -- and movzx.
global _start
section .data
flags: db 0x0F
counts: dw 500
section .bss
spare: resb 8 ; reserved, uninitialized
section .text
_start:
movzx rax, byte [flags] ; zero-extend the byte: 15
movzx rbx, word [counts]
mov qword [spare], rax ; store, then load it back
mov rdi, [spare]
add rdi, rbx ; 15 + 500 = 515 -> exit 3 (mod 256)
mov rax, 60
syscall
Cómo funciona
.bssreserva espacio sin inicializar conresb.movzxextiende con ceros las cargas angostas.- 515 mod 256 = 3: la salida de un byte trunca.
Palabras clave y builtins usados aquí
bytedbdwglobalqwordraxrbxrdiresbsectionword
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 445
- Tokens
- 58
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 63 segundos.
Paso 2 de 4 en Datos; paso 8 de 31 en Fundamentos del lenguaje.