Jump to content

Tahap-tahap dari source code menjadi executable file

From Haidhi Wiki

Process compile dari source code menjadi executable file melewati empat tahap yaitu:

  • Preprocessor
  • Compiler
  • Assembler
  • Linker

Preprocessor

yang dilakukan pada tahap preprocessor:

  • Menghapus semua comment
  • Ekpansi Header Semua file header seperti stdio.h akan di-ekspansi ke source code
  • Ekspansi Makro seperti define, contoh:
// Sebelum preprocessor
#include <stdio.h>
#define PI 3.14
int main() {
    printf("Nilai PI: %f\n", PI);
    return 0;
}

// Setelah preprocessor
#include <stdio.h>
int main() {
    printf("Nilai PI: %f\n", 3.14);
    return 0;
}


Hasil preprocessor akan disimpan dalam file filename.i Kita bisa lihat hasil preprocessor dengan perintah

gcc -E filename.c

Compiler

Pada tahap ini, file hasil preprocessing (filename.i) dicompile menjadi file assembly (filename.s). Code assembly ini berisi instruksi tingkat rendah yang dapat dieksekusi oleh prosesor.

gcc -S -masm=intel filename.c

Assembler

Pada tahap ini, code assembly (filename.s) dikonversi menjadi machine code (filename.o) oleh assembler. File .o yang dihasilkan berisi instruksi mesin tetapi masih dalam bentuk object file, bukan executable.

Linker

Tahap akhir dalam kompilasi adalah linking, yaitu menghubungkan object file (filename.o) dengan library external, seperti fungsi printf() dari <stdio.h>. Linker juga menambahkan kode tambahan untuk menyiapkan eksekusi program, misalnya menangani command-line arguments. Linking sendiri ada dua yaitu: Static Linking dan Dynamic Linking. Baca di sini Linker pada Compiler

Untuk melihat semua process di atas sekaligus

gcc -Wall -save-temps filename.c