Међујезик

Из Википедије, слободне енциклопедије

У информатици, међујезик је језик апстрактне машине, дизајнирана да помогне у анализи компјутерских програма. Термин долази од њихове употребе у компилаторима, где је изворни код програма преведен у форму која више одговара код-побољшање трансформације пре него што се користила за генерисање објеката или машинскког кода за циљну машину. Дизајн међујезика типично се разликује од практичног машинског језика на три основна начина:

Популарни формат за међујезик је три-адресни код.

Овај термин се такође користи да означи језике који се користе као посредници неких програмских језика на високом нивоу, који немају излазни објекат или код саме машине, али само међујезик као излаз. Овај међујезик се подноси на компилатору за такав језик, који тада излази као завршни објекат или машински код. Ово се обично ради да олакша процес оптимизације или да повећа вероватноћу да помоћу међујезика који има преводиоце за многе процесоре и оперативне системе, као што су C. Језици који се користе између језика на високом нивоу и језика ниског нивоа , као што су асемблерски језици.

Међупроизвод[уреди]

Међупроизвод је структура података која је изграђена од улазних података у програм, и из ког дела или свих излазних података програма је конструисана за узврат. Употреба термина обично подразумева да је већина информација присутна у улаз ко је задржан од стране међупроизвода, са даљим напоменама или брзих функција.

Канонски пример налазимо у већини модерних компајлера, где селинеарни људски читљив текст који представља програм претвара у међуструктуру граф података који омогућавају анализу протока и ре-аранжмана пре почетка прављења листе стварних инструкција процесора који ће урадити рад. Употреба међупроизвода дозвољава компајлер системима као што су GNU GCC и LLVM да буду на мети многих различитих изворних језика, и да подржавају генерацију за различите циљне архитектуре.

Језици[уреди]

Иако није експлицитно дизајниран као међујезик, C као апстрактни асемблерски и распрострањени "de facto" као системски језик у Unix-like и другим оперативним системима је направио популарни међујезик:  Eiffel, Sather, Esterel, неки дијалекти Lisp-а (Lush, Gambit), Haskell (Glasgow Haskell Compiler), Squeak's Smalltalk-subset Slang, Cython, Seed7, SystemTap, Vala, и остали направљени као међујезици. Варијанте C су дизајниране да обезбеде могућности C као портабл језику асемблера, укључујући C-- и C међујезик.

Било који језик с циљем за виртуелну машину може сматрати међујезиком:

  • Јава бајткод
  • Microsoft's Common Intermediate Language  је међујезик дизајниран да се дели за све компајлере за .NET Framework, пре статички или динамичке компилације у машински код.
  • Док већина међујезика је дизајнирано да подржи статички откуцане језике, Parrot међупроизвод је дизајниран да подржи динамички уписане језике-у почетку Perl и Python.
  • TIMI је висок ниво који циља IBM System 

GNU Compiler Collection (GCC) користи неколико прелазних језика интерно да се поједностави преносивост и крст компилације. Међу овим језицима су

LLVM компилаторски оквир заснован на LLVM IR међујезику, који је основан од стране Apple као "бајткод".[1][2]

ILOC међујезик [3] се користи у настави на компајлер дизајну као обичан циљани језик.[4]

Друго[уреди]

Остали статички алати за анализу користите међупроизвод.

На пример, radare2 је кутија за алат за анализу бинарне датотеке и да поништи-инжењеринг. Он користи прелазне језике ESIL [5]и REIL [6] да анализира бинарне датотеке.

Референце[уреди]

  1. „Bitcode (iOS, watchOS)”. Hacker News. 10. 06. 2015. Приступљено 17. 06. 2015. 
  2. „LLVM Bitcode File Format”. llvm.org. Приступљено 17. 06. 2015. 
  3. "An ILOC Simulator" by W. A. Barrett 2007, paraphrasing Keith Cooper and Linda Torczon, "Engineering a Compiler", Morgan Kaufmann. 2004. ISBN 978-1-55860-698-2.
  4. "CISC 471 Compiler Design" by Uli Kremer
  5. The radare2 contributors. „ESIL”. radare2 project. Приступљено 17. 06. 2015. 
  6. Sebastian Porst (7. 03. 2010). „The REIL language – Part I”. zynamics.com. Приступљено 17. 06. 2015. 

Спољашње везе[уреди]