Bináris fordítás

Bináris fordítás ( angol.  bináris fordítás ) – az egyik utasításkészlet emulációja a másikra a gépi kód fordítása miatt . Az utasítássorozatokat a rendszer a forráskészletből a cél utasításkészletté fordítja . A bináris fordítás lehetővé teszi az egyik architektúra alkalmazásainak futtatását, miközben a másodikon fut, és a bináris fordítók optimalizálásához gyakran nagyobb a kódvégrehajtás sebessége, mint az eredetié.

A bináris fordítás lehet statikus vagy dinamikus. A dinamikus fordítás a felhasználó számára láthatatlanul történik, amikor az alkalmazás elindul. Egy statikus fordító a forrásarchitektúra bináris kódját a célarchitektúra számára kész, teljes értékű alkalmazássá alakítja. A statikus dinamikus fordítás során a teljes forrás- futtatható fájl a célarchitektúra végrehajtható fájljává válik. Ez nagyon nehéz feladat - ennek a fordításnak a végrehajtása teljesen helyesen, mivel nem minden kódot olvas azonnal a fordító. Például a végrehajtható kód egyes részei csak közvetett ugrásokkal érhetők el , amelyek paraméterei csak futás közben ismertek.

Másrészt a dinamikus fordítás figyelembe veszi a rövid kódszekvenciákat (általában egy alapblokkot : ciklust vagy metódust), lefordítja azt, és gyorsítótárazza az eredményül kapott sorozatot. A kód nem teljes egészében, hanem olvasás közben kerül lefordításra, és ennek megfelelően a lefordításának lehetősége, illetve az elágazási utasításokhoz egy ellenőrzőpont jön létre a lefordított kódban.

A dinamikus bináris fordítás abban különbözik az egyszerű emulációtól, hogy eltávolítja a fő olvasási-dekódolási-végrehajtási emulátorhurkot (amely a fő szűk keresztmetszet), és ezért a fordítási folyamat során jelentős többletköltséggel kell fizetni. Ez a többletterhelés (terhelés) a jövőben némileg kiegyenlítődik, mivel a lefordított kód többször is végrehajtásra kerül (azaz újrafordítás nélkül).

A fejlettebb dinamikus fordítók dinamikus újrafordítást használnak : a lefordított kódot úgy szerelik fel, hogy megtudja a "kód hőmérsékletét", vagyis azt, hogy mely töredékek futnak le gyakran, és agresszív optimalizálást alkalmaznak . Ez a megközelítés egy JIT -fordítóra emlékeztet, és lényegében az ilyen fordítókat (például a Sun HotSpot technológiáját) dinamikus fordítóként lehet felfogni egy virtuális utasításkészletből ( bytecode ) a valódiba.

Megvalósítások

Az Apple bevezette az M68K élő kódfordító emulátort a PowerPC processzorral rendelkező Macintosh számítógépei közé , amely nagyon magas szintű megbízhatóságot, teljesítményt és kompatibilitást ért el (lásd: Mac 68K emulátor ). Ez lehetővé tette az Apple számára, hogy csak részben natív operációs rendszerrel hozzon piacra gépeket, a végfelhasználók pedig kipróbálhatták az új, gyorsabb architektúrát anélkül, hogy kockáztatnák a szoftverfrissítésekbe való befektetésüket. "Részben", mert az emulátor annyira sikeres volt, hogy az operációs rendszer számos részét továbbra is emulálták. A natív PowerPC operációs rendszerre való végső átállás csak a Mac OS X (10.0) 2001-es kiadásáig következett be, de ezen az új operációs rendszeren belül a „ Classzikus ” futási környezet továbbra is támogatta a PowerPC Mac képességeinek emulációját.

Az Apple később megvalósította a Rosetta fordítási réteget (amelyet a Mac OS 10.4-es kiadásai tartalmaznak ) az Intel-centrikus Mac-ekhez, amelyet a PPC-ről az x86-ra való átállás megkönnyítésére használtak, a dinamikus fordítás példájaként. A Transitive által az Apple számára kifejlesztett Rosetta a Transitive QuickTransit megoldásának megvalósítása , amely a SPARC, PowerPC, MIPS, Itanium és x86 architektúrákon alapuló platformok közötti dinamikus fordításra használható.

A Sun ( SPARCx86 ), az IBM (x86 → Power Architecture , PowerVM Lx86 ) és az SGI ( MIPSItanium2 ) [1] is alkalmazta a Transitive QuickTransit technológiáját.

A DEC fordítókat implementált a CISC VAX architektúráról a RISC Alpha architektúrára való áttéréshez . A DEC az FX!32 bináris fordítót is megvalósította az x86 architektúra alkalmazások Alpha alkalmazásokká való konvertálására .

Az MCST Lintel fordító lehetővé teszi x86-os alkalmazások futtatását az Elbrus 2000 processzoron ( e2k architektúra).

Az Intel az Intel IA-32 EL fordítót használta 32 bites x86-os alkalmazások futtatására az Itanium processzorcsaládon .


2000 januárjában a Transmeta bejelentette a Transmeta Crusoe [2] [3] frissített processzorának tervét . Ahogy az a GYIK -ből [4] következik , a beépített Code Morphing programszinttel, amely biztosítja az x86 utasítások dinamikus bináris fordítását Crusoe utasításokká.

A HP ARIES ( Automatikus újrafordítás és Integrált Környezetszimuláció ) egy  dinamikus bináris fordítórendszer, amely a gyors kódértelmezést kétfázisú dinamikus fordítással kombinálja a HP 9000 HP-UX alkalmazások átlátható és pontos futtatása érdekében a HP-UX 11i-n a HP Integrity szervereken . Az ARIES tolmács felhasználói beavatkozás nélkül emulálja a nem privilegizált PA-RISC utasítások teljes készletét, miközben csak a gyakran használt kódot fordítja le Itanium kódra - kétfázisú dinamikus fordítást alkalmaznak, amelyben az indítási profillal kapcsolatos információkat gyűjtik az első lépés. Az ARIES a dinamikusan lefordított kódot a kód-gyorsítótárnak vagy töredékgyorsítótárnak nevezett memóriapufferben tárolja. A lefordított kód célblokkjai meg vannak jelölve, hogy biztosítsák a végrehajtást a legtöbb esetben a kódgyorsítótárban. Amikor az emuláció befejeződött, az ARIES eldobja az összes lefordított kódot az eredeti alkalmazás módosítása nélkül. Az ARIES emulációs motor környezetemulációt is megvalósít, amely emulálja a HP 9000 HP-UX alkalmazásrendszer-hívásait , a jelzéseket, a kivételkezelést, a szálkezelést, a HP GNU Debugger emulációt a hibakereséshez, valamint az alkalmazáshoz szükséges alapfájlok generálását.

A Loongson sorozat kínai mikroprocesszorai a qemu bináris fordítórendszert használják a processzorgyártó ICT módosításaival. Körülbelül 200 utasítás került a MIPS-szerű architektúra processzorba az x86 emuláció egyszerűsítése érdekében.

A legfejlettebb ingyenes szoftver dinamikus fordító a QEMU . Támogatja a fordítást számos platformon, valamint az emulált és emulált architektúrák bármilyen kombinációjában.

Lásd még

Jegyzetek

  1. Archivált másolat (a hivatkozás nem elérhető) . Letöltve: 2009. augusztus 1. Az eredetiből archiválva : 2009. július 6.. 
  2. Ars Technica: Transmeta Crusoe Explored - 1. oldal - (1/2000) . Letöltve: 2017. november 12. Az eredetiből archiválva : 2017. december 2.
  3. ChipGeek – a Transmeta Crusoe mikroprocesszora
  4. Transmeta Corporation: crusoe

Irodalom

Linkek