GDBで、__NR_write操作を呼び出した直後に、__NR_lchownシステムコール番号(16)がraxレジスタに渡されていることに気づきました。私が得たコードは次のとおりです。操作後に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
によると:私はLinux上でだので、
#define __NR_write 4
#define __NR_lchown 16
だから、私はこのlchownは、コマンドchownコマンドの権利とは何かを持っている必要がありますと仮定しますか?とにかく、問題は、なぜ私は操作を呼び出した直後に値16がロードされているのですか?