Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

Apeluri de Sistem Directe în Linux (Syscalls): Instrucțiunea SYSCALL în Assembly (x86_64)

Ghid complet pentru apeluri de sistem x86_64 în Linux: instrucțiunea SYSCALL, numerele de identificare în RAX, parametrii în RDI/RSI/RDX și ieșirea curată cu sys_exit.

Sintaxă
mov rax, 1 (sys_write); mov rdi, 1; syscall

Pentru a citi un fișier, a trimite date în consolă sau a aloca memorie, o aplicație din User-Space trebuie să ceară intervenția nucleului sistemului de operare (Kernel). În arhitectura x86_64, comutarea securizată din User-Mode (Ring 3) în Kernel-Mode (Ring 0) se realizează prin instrucțiunea hardware modernă SYSCALL (care a înlocuit vechea întrerupere software lentă int 0x80 din epoca 32-bit).

Syscall ID în RAX Parametru 1 (RDI) Parametru 2 (RSI) Parametru 3 (RDX)
sys_read 0 File Descriptor (0 = stdin) Adresă tampon buffer Număr maxim de octeți
sys_write 1 File Descriptor (1 = stdout) Adresă șir de caractere Lungimea șirului în octeți
sys_open 2 Calea fișierului (string null-terminated) Flag-uri acces (O_RDONLY etc.) Permisiuni (mode)
sys_exit 60 Cod de ieșire (0 = succes) – –
Apelul direct al nucleului pentru afișarea unui text și ieșire
; Scrierea mesajului pe ecran (sys_write):
mov rax, 1             ; Numărul apelului de sistem pentru sys_write
mov rdi, 1             ; Descriptorul de fișier 1 = STDOUT (consola)
mov rsi, mesaj         ; Adresa memoriei unde se află textul
mov rdx, 14            ; Lungimea textului (14 octeți)
syscall                ; Invocă nucleul Linux!

; Oprirea curată a procesului (sys_exit):
mov rax, 60            ; Numărul apelului pentru sys_exit
mov rdi, 0             ; Codul de retur 0 (Succes)
syscall                ; Procesul se încheie imediat
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Apeluri de Sistem Directe în Linux (Syscalls): Instrucțiunea SYSCALL

Ai o nelămurire despre utilizarea comenzii Apeluri de Sistem Directe în Linux (Syscalls): Instrucțiunea SYSCALL sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.