Menu
CoddyTech

Apa Itu Syscall?

Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 31 dari 45.

Kamu telah menulis instruksi assembly seperti mov dan lea. Instruksi ini berjalan langsung di CPU. Namun, bagaimana jika kamu perlu melakukan sesuatu yang tidak bisa dilakukan CPU sendiri, seperti mencetak ke layar, membaca dari keyboard, atau keluar dari program?

Untuk tugas-tugas ini, kamu memerlukan sistem operasi (Linux, dalam kursus ini).

Apa itu syscall?

syscall (system call) adalah permintaan dari programmu kepada sistem operasi. Dengan syscall, kamu meminta OS melakukan sesuatu untukmu.

Mengapa kamu membutuhkan syscall:

TugasBisakah CPU melakukannya sendiri?Perlu syscall?
Menjumlahkan dua angkaYaTidak
Memindahkan data antarregisterYaTidak
Mencetak teks ke layarTidakYa
Membaca input keyboardTidakYa
Menghentikan programTidakYa
Membuka fileTidakYa

Cara kerja syscall:

  1. Kamu memasukkan nomor syscall ke rax (memberi tahu OS apa yang kamu inginkan)
  2. Kamu memasukkan argumen ke register lain (rdi, rsi, rdx, dan sebagainya)
  3. Kamu menjalankan instruksi syscall
  1. CPU melompat ke kernel OS
  2. OS menjalankan permintaan tersebut
  3. OS mengembalikan kendali ke programmu

Analogi:

Bayangkan syscall seperti menghubungi kantor pemerintah:

LangkahAnalogiDalam assembly
1Tentukan layanan yang kamu butuhkanPilih nomor syscall (masukkan ke rax)
2Isi formulirMasukkan argumen ke dalam register
3Ajukan permintaanJalankan syscall
4Pemerintah memprosesnyaKernel OS mengerjakannya
5Dapatkan hasilnya kembaliProgram berlanjut

Syscall yang akan kamu pelajari dalam kursus ini:

SyscallNomorFungsinyaBab
exit60Mengakhiri programBab 4
write1Menampilkan teks di layarBab 5

Syscall paling penting untuk saat ini: exit

Tanpa exit, programmu akan terus berjalan selamanya atau mengalami crash. Setiap program yang kamu tulis harus diakhiri dengan syscall exit.

mov rax, 60    ; nomor syscall untuk exit
mov rdi, 0     ; kode exit (0 = berhasil)
syscall        ; minta OS untuk keluar

Coba sendiri

Pelajaran ini tidak memiliki tantangan kode.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground Assembly