Por que as chamadas do sistema x86-64 Linux modificam o RCX e qual é o valor?

Estou tentando alocar alguma memória no linux comsys_brk syscall. Aqui está o que eu tentei:

BYTES_TO_ALLOCATE equ 0x08

section .text
    global _start

_start:
    mov rax, 12
    mov rdi, BYTES_TO_ALLOCATE
    syscall

    mov rax, 60
    syscall

O problema é que, conforme a convenção de chamada do linux, eu esperava que o valor de retorno estivesse emrax registrador (ponteiro para a memória alocada). Eu corri isso em gdb e depois de fazersys_brk syscall notei o seguinte conteúdo do registro

Antes do syscall

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

Após syscall

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

Eu não entendo muito bem o valor norcx registrar neste caso. Qual usar como ponteiro para o início de 8 bytes alocado comsys_brk?

questionAnswers(1)

yourAnswerToTheQuestion