Oraliq vakillik - Intermediate representation

An oraliq vakillik (IQ) bo'ladi ma'lumotlar tuzilishi yoki a tomonidan ichki ishlatilgan kod kompilyator yoki virtual mashina vakili qilmoq manba kodi. IQ keyingi ishlov berish uchun qulay bo'lishi uchun mo'ljallangan, masalan optimallashtirish va tarjima.[1] "Yaxshi" IR bo'lishi kerak aniq - ma'lumotni yo'qotmasdan manba kodini ifodalashga qodir[2] - va mustaqil har qanday ma'lum bir manbaning yoki maqsadli tilning.[1] IQ bir nechta shakllardan birini olishi mumkin: xotirada ma'lumotlar tuzilishi yoki maxsus panjara - yoki suyakka asoslangan kod dastur tomonidan o'qilishi mumkin.[3] Ikkinchi holatda u ham deyiladi oraliq til.

Kanonik misol ko'plab zamonaviy kompilyatorlarda uchraydi[qaysi? ], bu erda dasturni ifodalovchi inson tomonidan o'qiladigan chiziqli matn qidiruv vositaga aylantiriladi grafik tuzilishi bu imkon beradi oqim tahlili va protsessorning haqiqiy ko'rsatmalarining ketma-ketligini yaratmasdan oldin qayta tartibga solish. Bu kabi oraliq vakolatxonadan foydalanish kompilyator tizimlariga imkon beradi GNU kompilyatori to'plami va LLVM uchun turli xil manba tillari tomonidan ishlatilishi kerak kod yaratish turli xil maqsadlar uchun me'morchilik.

O'rta til

An oraliq til ning tili mavhum mashina tahlil qilishda yordam berish uchun mo'ljallangan kompyuter dasturlari. Bu atama ularning ishlatilishidan kelib chiqadi kompilyatorlar, bu erda dasturning manba kodini ishlab chiqarish uchun ishlatishdan oldin kodni takomillashtirish uchun qulayroq shaklga tarjima qilinadi ob'ekt yoki mashina maqsadli mashina uchun kod. Qidiruv tilning dizayni odatda amaliy tildan farq qiladi mashina tili uchta asosiy usulda:

O'rta tillar uchun mashhur format bu uchta manzil kodi.

Ushbu atama, ba'zilar tomonidan qidiruv vositalar sifatida ishlatilgan tillarga murojaat qilish uchun ham ishlatiladi yuqori darajadagi dasturlash tillari ob'ekt yoki mashina kodini o'zi chiqarmaydigan, faqat oraliq tilni chiqaradigan. Ushbu oraliq til ushbu til uchun kompilyatorga yuboriladi, so'ngra tugagan ob'ekt yoki mashina kodini chiqaradi. Bu odatda jarayonini engillashtirish uchun amalga oshiriladi optimallashtirish yoki oshirish uchun ko'chirish ko'pchilik uchun kompilyatorlarga ega bo'lgan oraliq tildan foydalanish protsessorlar va operatsion tizimlar, kabi C. Ushbu til uchun ishlatiladigan tillar yuqori darajadagi tillar va past darajali kabi tillar assambleya tillari.

Tillar

Oraliq til sifatida aniq ishlab chiqilmagan bo'lsa ham, C ning mavhumligi sifatida tabiati yig'ilish va uning amalda hamma joyda mavjudligi tizim tili yilda Unixga o'xshash va boshqa operatsion tizimlar uni mashhur qidiruv tiliga aylantirdi: Eyfel, Birlashtiruvchi, Esterel, biroz lahjalar ning Lisp (Yam-yashil, Gambit ), Xaskell (Glasgow Haskell kompilyatori ), Siqish Smalltalk-subset jargoni, Cython, 7. Urug ', SystemTap, Vala va boshqalar C dan oraliq til sifatida foydalanadilar. C variantlari ko'chma sifatida C xususiyatlarini ta'minlash uchun ishlab chiqilgan assambleya tili, shu jumladan C - va S oraliq til.

A uchun mo'ljallangan har qanday til virtual mashina yoki p-kod mashinasi oraliq til deb qaralishi mumkin:

The GNU kompilyatori to'plami (GCC) portativlikni soddalashtirish uchun bir nechta oraliq tillarni ichki sifatida ishlatadi o'zaro faoliyat kompilyatsiya. Ushbu tillar orasida

GCC yakuniy maqsad sifatida ushbu IRlarni ishlab chiqarishni qo'llab-quvvatlaydi:

The LLVM kompilyator ramkasi LLVM IR ixcham, ikkilik ketma-ket vakili "bitkod" deb ham ataladigan va Apple tomonidan ishlab chiqarilgan oraliq til.[4][5] GIMPLE Bytecode singari, LLVM Bitcode ham ulanish vaqtini optimallashtirishda foydalidir. GCC singari, LLVM shuningdek to'g'ridan-to'g'ri tarqatish uchun mo'ljallangan ba'zi IRlarni, shu jumladan Google-ni ham maqsad qiladi PNaCl IQ va SPIR.

ILOC oraliq tili[6] oddiy maqsadli til sifatida kompilyator dizayni bo'yicha darslarda qo'llaniladi.[7]

Boshqalar

Statik tahlil vositalar ko'pincha oraliq vakolatxonadan foydalanadi. Masalan; misol uchun, radare2 ikkilik fayllarni tahlil qilish va teskari muhandislik uchun asboblar qutisi. ESIL oraliq tillaridan foydalaniladi[8] va REIL[9] ikkilik fayllarni tahlil qilish.

Shuningdek qarang

Adabiyotlar

  1. ^ a b Uoker, Devid. "CS320: Tuzuvchilar: oraliq vakillik" (Ma'ruza slaydlari). Olingan 12 fevral 2016.
  2. ^ Chou, Fred (2013 yil 22-noyabr). "Tillararo o'zaro bog'liqlik muammosi". ACM navbati. 11 (10). Olingan 12 fevral 2016.
  3. ^ Toal, Rey. "Oraliq vakolatxonalar". Olingan 12 fevral 2016.
  4. ^ "Bitcode (iOS, watchOS)". Hacker yangiliklari. 2015 yil 10-iyun. Olingan 17 iyun 2015.
  5. ^ "Bit kod kodining LLVM formati". llvm.org. Olingan 17 iyun 2015.
  6. ^ "ILOC simulyatori" Arxivlandi 2009-05-07 da Orqaga qaytish mashinasi V. A. Barrett tomonidan 2007, Kit Kuper va Linda Torkzonning so'zlarini tarjima qilgan, "Tuzuvchi muhandisligi", Morgan Kaufmann, 2004. ISBN  1-55860-698-X.
  7. ^ "CISC 471 kompilyatori dizayni" Uli Kremer tomonidan
  8. ^ Radare2 hissadorlari. "ESIL". radare2 loyihasi. Arxivlandi asl nusxasi 2015 yil 18-avgustda. Olingan 17 iyun 2015.
  9. ^ Sebastian Porst (2010 yil 7 mart). "REIL tili - I qism". zynamics.com. Olingan 17 iyun 2015.

Tashqi havolalar