Menu
CoddyTech

Deskriptor file (rdi)

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

Di pelajaran sebelumnya, kamu menggunakan mov rdi, 1 sebagai bagian dari syscall write. Angka 1 itu disebut file descriptor.

File descriptor adalah angka yang memberi tahu sistem operasi ke mana data harus dikirim.

Tiga deskriptor file standar di Linux:

Deskriptor fileNamaTujuan data
0stdinInput dari keyboard (membaca data dari pengguna)
1stdoutOutput di layar (output normal program)
2stderrOutput di layar (pesan error)

Mengapa ada dua output untuk layar?

Output normal (stdout) dan output error (stderr) ditampilkan di layar yang sama, tetapi diperlakukan secara terpisah. Ini memungkinkan kamu untuk:

  • Mengalihkan output normal ke file sambil tetap melihat error di layar
  • Menampilkan error meskipun output normal disembunyikan

Untuk mencetak dalam kursus ini:

Kamu akan selalu menggunakan file descriptor 1 (stdout) untuk mencetak pesan. Kamu belum perlu menggunakan stderr.

Contoh:

mov rdi, 1      ; kirim output ke stdout (layar)

Apa yang terjadi jika kamu menggunakan file descriptor yang salah?

Jika kamu menggunakanHasil
0 (stdin)syscall write mengharapkan input, bukan output: akan gagal atau tidak melakukan apa pun
2 (stderr)Berfungsi seperti stdout (mencetak ke layar), tetapi dimaksudkan untuk error
Angka lainnyaKernel tidak mengenalinya: syscall gagal
challenge icon

Tantangan

Kamu diberi string bernama message dengan nilai 'OK' yang diikuti baris baru. Tulis baris kode yang mengatur file descriptor untuk mencetak ke layar (stdout). Tulis hanya instruksi mov untuk rdi.

Coba sendiri

section .data
    message db 'OK', 0x0a
    msgLen equ $ - message

section .text
    global _start

_start:
    ; Kamu mengatur deskriptor file di sini
    %include "solution.asm"
    
    mov rax, 1
    ; Kamu seharusnya sudah mengatur rdi
    mov rsi, message
    mov rdx, msgLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall
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