В GDB я заметил, что после того, как я вызываю операцию __NR_write, сразу же после этого в регистр rax передается номер sysall __NR_lchown (16). Код, который я получил это:Почему syscall __NR_lchown добавлен в регистр после операции?
.data
BemVindo: .ascii "Seja bem vindo!\n"
Digite: .ascii "Digite alguma coisa\n"
_start:
mov $4, %rax
mov $1, %rbx
mov $BemVindo, %rcx
mov $16, %rdx
int $0x80
mov $4, %rax # had to add this line because I was assuming that value 4 was still there in the register
mov $Digite, %rcx
mov $20, %rdx
int $0x80
По моим unistd.h
:
#define __NR_write 4
#define __NR_lchown 16
Так, так как я на Linux я предполагаю, что это lchown должен иметь что-то делать с правом команды Чаун? Во всяком случае, вопрос в том, почему значение 16 загружается сразу после вызова операции?