Pengenalan Bahasa Pemrograman Common Intermediate Language (CIL)

Salah satu bahasa pemrograman didunia yang populer adalah Commom Intermediate Language (CIL). Common Intermediate Language (CIL), bahasa yang menargetkan komplikasi Common Language Infrastructure (CLI) ke Common Intermediate Language.


PEMBAHASAN

A. SEJARAH

Common Intermediate Language awalnya dikenal sebagai Microsoft Intermediate Language (MSIL) atau Intermediate Language selama rilis beta bahasa.NET. Karena standarisasi C# dan CLI, bytecode sekarang secara resmi dikenal sebagai Common Intermediate Language (CIL). Definisi virus Windows Defender terus merujuk ke biner yang dikomplikasi dengannya sebagai MSIL.


B. PENGERTIAN

Common Intermediate Language adalah kumpulan instruksi biner bahasa perantara yang didefenisikan dalam spesifikasi Common Language Infrastructure (CLI). Instruksi CIL dieksekusi oleh lingkungan runtime yang kompatibel dengan CLI seperti Common Language Runtime. CIL berorientasi objek, bytecode berbasis tumpukan. Waktu proses biasanya tepat waktu komplikasi instruksi CIL ke dalam kode asli.


C. PEMBERITAHUAN UMUM

Selama komplikasi bahasa pemrograman CLI, kode asal diterjemahkan ke dalam kode CIL ke pada kode objek khusus platform atau prosesor. CIL sudah ada mengatur instruksi CPU dan platform-independen yang dapat di eksekusi pada lingkungan apapun yang mendukung infrastruktur bahasa umum, mirip waktu proses NEt di Windows, atau runtime Mono lintas platform. Secara teori, ini menghilangkan kebutuhan  buat mendistribusikan mengajukan yang dapat di hukum tidak sama untuk peron dan jenis CPU yang tidak sinkro. Kode CIL buat keamanan selama runtime, menyampaikan keamanan serta untuk yang lebih baik dari pada mengajukan yang bisa dieksekusi yang dikomplikasi secara orisinal.

Proses eksekusi terlihat seperti :

1. Kode sumber diubah menjadi bytecode CIL dan perakitan CLI dibuat.

2. Setelah eksekusi perakitan CIL, kodenya dilewatkan melalui compiler JIT runtime untuk menghasilkan kode asli. Koplikasi sebelumnya juga dapat digunakan, yang menghilangkan langkah ini, tetapi dengan mengorbankan portabilitas file yang dapat dieksekusi.

3. Prosesor komputer mengeksekusi kode asli.


D. INSTRUKSI

Bytecode CIL memiliki memiliki instruksi untuk kelompok tugas berikut:

- Muat dan simpan

- Hitung 

- Konversi jenis

- Pembuatan dan manipulasi objek

- Manajemen tumpukan operan (push/pop)

- Transfer kontrol (percabangan)

- Metode pemanggilan dan pengembalian

- Melempar pengecualian

- Konkurensi berbasis monitor

- Manipulasi data dan pointer fungsi diperlukan untuk C++/CLI dan kode C# yang tidgak aman


E. MODEL KOMPUTASI

Kode yang menambahkan dua angka dalam bahasa rakitan x86, dimana eax dan edx menentukan dua register tujuan umum yang berbeda :

add eax, edx

Kode dalam Intermediate Language (IL), dimana 0 adalah eax dan 1 adalah edx :

ldloc.0   // push Local variable 0 onto stack

ldloc.1  // push Local variable  1 onto stack

add     // pop and add the top two stack items then push the result onto the stack

stloc.0 // pop and store the top stack item to Local variable

Dalam contoh terakhir, nilai dari dua register, eax dan edx, pertama kali didorong pada stack. Ketika instruksi-tambahan dipanggil, operan-operan itu "muncul", atau diambil, dan hasilnya "didorong", atau disimpan, di tumpukan. Nilai yang di hasilkan kemudian dikeluarkan dari tumpukan dam disimpan di eax.


1. Konsep Berorientasi Objek

Setiap metode perlu (dengan beberapa pengecualian) umtuk berada di kelas. Begitu juga metode statis ini :

.class public Foo {

      .method public static int32 Add(int32, int332) cil managed {

             .maxstack 2

              ldarg.0 // Load the first argument;

              ldarg.1 // Load the second argument;

              add      // add them;

              ret       // return the result;

        }

}

Metode Add tidak memerlikan instance Foo untuk dideklarasikan sebagai statis, dan kemudian dapat digunakan seperti ini di C#:

int r = Foo.Add(2, 3);        // 5

Di CIL akan terlihat seperti ini:

ldc.i4.2

ldc.i4.3

call int32 Foo::Add(int32, int32)

stloc.0


2. Kelas instan

Kelas instan berisi setidaknya satu konstruktor dan beberapa anggota instance. Kelas berikut memiliki seperangkat metode yang mewakili seperangkat metode yang mewakili tindakan Car-object.


3. Membuat  objek

Dalam instance kelas C# dibuat seperti ini:

Car myCar = new Car(1,4);

Car yourCar = new car(1, 3);


4. Memanggil metode instan

Metode instan dipanggil dalam C# sebagai salah satu yang berikut:

myCar.Move(3);

Seperti yang dipanggil dalam CIL:

ldloc.0     // Load the object "myCar" on the stack

ldc.i4.3

call instance void Car::Move(int32)


5. Metadata

Metadata dapat berupa data "atribut". Atribut dapat disesuaikan dengan memperluas Atribute class. Ini adalah fitur yang kuat. Hal ini memungkinkan pembuat kelas kemampuan untuk menghiasinya dengan informasi tambahan yang dapat digunakan oleh konsumen kelas dalam berbagai cara yang bermakna, tergantung pada domain aplokasi.


F. CONTOH

Di bawah ini adalah program Hello,Word dasar yang ditulis dalam assembler CIL. Ini akan menampilkan string "Hello,word".

.assembly Hello {}

.assembly extern mscorlib {}

.method static void Main()

{

       .entrypoint

       .maxstack 1

       ldstr "Hello, world"

       call void [mscorlib]System.Console::WriteLine(string)

       ret

}

Ini hanyalah representasi bagaimana CIL terlihat di dekat level mesin virtual (VM). Saat dikomplikasi, metode disimpan sebagai byte di dalam rakitan, yang merupakan Portable Executable (PE).


KESIMPULAN

Common Intermediate Language adalah kumpulan instruksi biner bahasa perantara yang didefenisikan dalam spesifikasi Common Language Infrastructure (CLI). CIL awalnya dikenal sebagai Microsoft Intermediate Language (MSIL). CIL adalah set instruksi CPU dan platform-indenpenden yang dapat dieksekusi di lingkungan apa pun yang mendukungan Common Language Infrastructure, seperti runtime,NET di Windows, atau runtime Mono lintas platform.


Penulis: Lilis Marlina (Mahasiswi Prodi Sistem Informasi Kelas 1E FST UIN Sulthan Thaha Saifudin Jambi)

Post a Comment

Lebih baru Lebih lama