Mi az a hordozható futtatható fájl (PE)?


Legjobb válasz

Hordozható futtatható

A hordozható futtatható formátum a futtatható fájlok, az objektumkód, a DLL-ek, a FON Font fájlok és más fájlformátum, amelyet a Windows operációs rendszerek 32 és 64 bites verzióiban használnak. A PE formátum egy olyan adatstruktúra, amely a Windows OS betöltő számára szükséges információkat tartalmazza a becsomagolt futtatható kód kezeléséhez.

Ez magában foglalja a dinamikus könyvtár hivatkozásokat, az API export és import táblákat, az erőforrás-kezelési adatokat és a szálakat. -lokális tárolási (TLS) adatok. NT operációs rendszereken a PE formátumot használják az EXE, DLL, SYS (eszközillesztő) és más fájltípusokhoz. Az Extensible Firmware Interface (EFI) specifikáció szerint a PE a standard futtatható formátum az EFI környezetekben.

Válasz

A C forráskód hordozhatósága azt jelenti, hogy amíg a kívánt célplatform van egy működő C fordítója, az újrafordítással áthelyezheti a C forráskódot a célplatformra anélkül, hogy módosítania kellene. Mivel szinte minden célplatformhoz elérhető egy C fordító, a C nagyon hordozható programozási nyelvnek számít.

Ez azt jelenti, hogy egyszerűen a kód C-be írása nem garantálja a hordozhatóságot. Fegyelmet kell gyakorolnia, hogy elkerülje a nem hordozható kód írását. Például az alábbiak bármelyikét végrehajtó kód megírása nem hordozható kódot eredményez:

  • Feltételez minden olyan típusú adattípust, amely nem char.
  • Teszi feltételezések arról, hogy az adatok hogyan illeszkednek a memóriába és a struktúrákba.
  • Feltételezéseket tesz arról, hogy az adatok hogyan rakódnak / töltenek be a struktúrákba.
  • Feltételezéseket tesz a bájtok sorrendjéről (big endian vs little endian) .
  • Nem szabványos fordítóbővítményt használ, amely nem biztos, hogy minden fordítói megvalósításnál elérhető.
  • Nem szabványos könyvtárbővítményt használ, amely nem biztos, hogy minden platformon elérhető.
  • Bármely megvalósítás által meghatározott viselkedésre támaszkodik, amely másképpen működhet egy másik fordító megvalósításában.
  • Bármely meghatározatlan viselkedést tartalmaz, amely úgy tűnik , hogy egy környezetben működik, de kiszámíthatatlanul viselkedhet egy másik környezetben.
  • Bármely API-hívást (alkalmazásprogramozási felület) indít az operációs rendszerhez rendszer, amely nem biztos, hogy minden környezetben elérhető.
  • Feltételez bizonyos memóriacímeket (például, hogy egy adott memóriacímet hozzárendelnek egy hardvereszköz-nyilvántartáshoz stb.).
  • Feltételez egy mutató méretét, vagy azt, hogy a mutató akkora, mint egy int.
  • Feltételezi az argumentumok átadásának módját (a veremben vagy meghatározott regiszterekben).
  • Bármely inline összeállítási nyelvű forráskódot tartalmaz.
  • A C nyelv legújabb és legnagyobb tulajdonságát használja, amelyet egyes fordítói implementációk még nem támogatnak (és egyes esetekben soha nem is használhatók) támogatott).
  • Olyan könyvtárra támaszkodik, amely a fentiek bármelyikét elvégzi.

Ez nem teljes lista.

Ha teheti ” Ne kerülje a nem hordozható kód használatát, a legjobb megoldás az, ha a nem hordozható kódot külön forrásfájlba különíti el. Ezután, amikor mégis új célplatformra kell áthelyeznie a kódot, nagyon világos, hogy a forráskód melyik részhalmazát kell módosítani.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük