¿Por qué las llamadas al sistema Linux x86-64 modifican RCX, y qué significa el valor?

Estoy tratando de asignar algo de memoria en Linux consys_brk syscall Esto es lo que probé:

BYTES_TO_ALLOCATE equ 0x08

section .text
    global _start

_start:
    mov rax, 12
    mov rdi, BYTES_TO_ALLOCATE
    syscall

    mov rax, 60
    syscall

La cuestión es que, según la convención de llamadas de Linux, esperaba que el valor de retorno estuviera enrax registrarse (puntero a la memoria asignada). Ejecuté esto en gdb y después de hacersys_brk syscall me di cuenta de los siguientes contenidos de registro

Antes de syscall

rax            0xc      12
rbx            0x0      0
rcx            0x0      0
rdx            0x0      0
rsi            0x0      0
rdi            0x8      8

Después de syscall

rax            0x401000 4198400
rbx            0x0      0
rcx            0x40008c 4194444 ; <---- What does this value mean?
rdx            0x0      0
rsi            0x0      0
rdi            0x8      8

No entiendo bien el valor en elrcx registrarse en este caso ¿Cuál usar como puntero al comienzo de 8 bytes que asigné consys_brk?

Respuestas a la pregunta(1)

Su respuesta a la pregunta