typestar

argc y argv en Assembly

En _start la pila guarda argc y luego los punteros argv.

; At _start the stack holds argc, then the argv pointers.
        global _start

        section .text
_start:
        mov rdi, [rsp]          ; argc: 1 when run bare
        mov rsi, [rsp + 8]      ; argv[0], the program path

        ; count argv[0]'s bytes into rcx
        xor rcx, rcx
.scan:
        cmp byte [rsi + rcx], 0
        je .done
        inc rcx
        jmp .scan
.done:
        add rdi, 100            ; argc + 100 = 101
        mov rax, 60             ; exit code 101
        syscall

Cómo funciona

  1. [rsp] es argc; [rsp + 8] es argv[0].
  2. El barrido mide el largo de la ruta del programa.
  3. Corrido pelado, argc es 1: código de salida 101.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
397
Tokens
54
Ritmo de tres estrellas
55 tpm

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

Escribe este fragmento

Paso 3 de 3 en Hablando con Linux; paso 28 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →