Pengertian Intermediate Representation ~ IR

Pengertian Intermediate Representation (Representasi Menengah) adalah struktur data atau kode yang digunakan secara internal oleh compiler atau mesin virtual untuk mewakili kode sumber (source code). IR dirancang khsusus untuk menjadi kondusif ketika diproses lebih lanjut, misalnya optimasi dan terjemahan.


Sebuah IR harus memiliki keakuratan yang baik ~ mampu mewakili kode sumber tanpa harus kehilangan informasi dan independen dari sumber tertentu atau target bahasanya. IR dapat mengambil salah satu dari beberapa bentuk, di memori struktur data, atau khusus tupel, atau tumpukan berbasis kode, dibaca oleh program dalam kasus terakhir itu juga disebut bahasa menengah.

Sebuah contoh kanonik ditemukan di sebagian besar kompiler moden di mana teks dibaca manusia dengan linear yang mewakili sebuah program untuk diubah menjadi perantara struktur grafik yang memungkinkan analisis aliran dan penataan kembali sebelum membuat urutan instruksi CPU yang sebenarnya.

Penggunaan representasi yang seperti ini memungkinkan sistem compiler seperti GNU Compiler Collection dan LLVM untuk digunakan oleh banyak bahasa sumber yang berbeda untuk menghasilkan kode untuk banyak target arsitektur yang berbeda.

Bahasa menengah
Sebuah bahasa menengah adalah bahasa sebuah mesin abstrak yang dirancang khusus untuk membantu dalam analisis program komputer. Istilah ini berasal dari penggunaannya dalam kompiler, dimana kode sumber program diterjemahkan ke dalam bentuk yang lebih cocok untuk kode guna meningkatkan transformasi sebelum digunakan untuk menghasilkan objek atau mesin kode untuk mesin target. Desain bahasa perantara biasanya berbeda dari bahasa praktis mesin dalam tiga cara dasar yaitu.


  1. Setiap instruksi mewakili satu operasi dasar dengan tepat; misalnya "shift­add" mode pengalamatan yang umum di mikroprosesor tidak dihadirkan.
  2. Kontrol aliran informasi mungkin tidak termasuk dalam set instruksi.
  3. Jumlah register prosesor yang tersedia mungkin besar, bahkan tak terbatas.
  4. Sebuah format populer untuk bahasa menengah adalah kode tiga alamat .

Istilah ini juga digunakan untuk merujuk kepada bahasa yang digunakan sebagai perantara oleh beberapa bahasa pemrograman tingkat tinggi yang tidak output (keluaran) dari objek atau kode mesin itu sendiri, melainkan output (keluaran) bahasa menengah saja.

Bahasa menengah ini diserahkan kepada kompiler untuk bahasa tersebut, yang kemudian output diselesaikan objek atau kode mesin. Hal ini biasanya dilakukan untuk mempermudah proses optimasi atau untuk meningkatkan portabilitas dengan menggunakan bahasa perantara yang memiliki kompiler untuk banyak prosesor dan sistem operasi, seperti C. Bahasa yang digunakan untuk musim gugur ini dalam kompleksitas antara bahasa tingkat tinggi dan tingkat rendah bahasa, seperti bahasa assembly.

Bahasa

Meskipun tidak secara eksplisit dirancang sebagai bahasa perantara, C 's alam sebagai abstraksi dari perakitan dan mana­mana sebagai de facto bahasa sistem di Unix­seperti sistem operasi dan lainnya telah membuatnya menjadi populer bahasa menengah: Eiffel, Sather, Esterel, beberapa dialek dari Lisp (Lush, Gambit), Haskell ( Glasgow Haskell Compiler ), mencicit 's Smalltalk­subset Slang, Cython, Seed7, SystemTap, Vala, dan lain­lain menggunakan C sebagai bahasa menengah. Varian C telah dirancang untuk menyediakan fitur C sebagai portable bahasa assembly, termasuk C­­ dan C Intermediate Language.

Bahasa menargetkan mesin virtual atau p­kode mesin dapat dianggap sebagai bahasa perantara:

  1. Bytecode Java.
  2. Microsoft Common Intermediate Language adalah bahasa menengah dirancang untuk digunakan bersama oleh semua kompiler untuk .NET Framework , sebelum kompilasi statis atau dinamis untuk kode mesin.
  3. Sementara kebanyakan bahasa menengah dirancang untuk mendukung bahasa statis diketik, Bayan representasi menengah dirancang untuk mendukung dinamis mengetik bahasa­awalnya Perl dan Python.
  4. TIMI adalah tingkat tinggi yang menargetkan IBM System i platform.
  5. O-code for BCPL
  6. MATLAB precompiled code
  7. Microsoft P-Code

GNU Compiler Collection (GCC) menggunakan beberapa bahasa antara internal untuk menyederhanakan portabilitas dan cross­kompilasi . Di antara bahasa ini

  1. Sejarah Register Transfer Bahasa (RTL)
  2. Bahasa Tree GENERIC
  3. SSA berbasis GIMPLE.
  4. Standard Portabel Menengah Perwakilan SPIR / SPIR­V
  5. LLVM Menengah Representasi
  6. HSA Menengah Lapisan

The LLVM kerangka compiler didasarkan pada LLVM IR bahasa menengah, yang telah productized oleh Apple sebagai "bitcode". The ILOC bahasa menengah digunakan di kelas pada desain compiler sebagai bahasa target  sederhana.

Analisis statis alat sering menggunakan representasi menengah. Misalnya, radare2 adalah toolbox untuk analisis file biner dan reverse­engineering. Ia menggunakan bahasa menengah Esil et REIL untuk menganalisis file biner.

Reference :Intermediate representation, https://en.wikipedia.org/wiki/Intermediate_representation, diakses pada kamis 2/6/2016.

0 Comments


EmoticonEmoticon