Кіріспе

Портативті орындалатын файл (PE) форматы — Windows операциялық жүйелерінің 32 биттік және 64 биттік нұсқаларында, сондай-ақ UEFI орталарында қолданылатын орындалатын файлдар, объектілік код, DLL және басқа файлдар үшін қолданылатын формат. PE форматы — Windows операциялық жүйесінің жүктеушісіне оралған орындалатын кодты басқаруға қажетті ақпаратты қамтитын дерек құрылымы. Бұған динамикалық кітапханаларға сілтемелер, API экспорттау және импорттау кестелері, ресурстарды басқару деректері және жиектелген жергілікті сақтау (TLS) деректері кіреді. NT операциялық жүйелерінде PE форматы EXE, DLL, SYS (құрылғы драйвері), MUI және басқа да файл түрлері үшін қолданылады. Бірыңғай кеңейтілетін аппараттық интерфейсінің (UEFI) спецификациясында PE EFI орталарында стандартты орындалатын формат екені көрсетілген. Windows NT операциялық жүйелерінде PE қазіргі уақытта IA 32, x86 64 (AMD64/Intel 64), IA 64, ARM және ARM64 нұсқаулар жиынтығы архитектураларын (ISA) қолдайды. Windows 2000-дан бұрын Windows NT (және демек PE) MIPS, Alpha және PowerPC ISA-ларын қолдады. PE Windows CE-де қолданылатындықтан, ол MIPS, ARM (Thumb-ты қоса) және SuperH ISA-ларының бірнеше нұсқаларын қолдауды жалғастырады. PE форматына ұқсас форматтар — ELF (Linux және Unix-тің көптеген нұсқаларында қолданылады) және Mach O (macOS және iOS-та қолданылады).

Тарих

Microsoft Windows NT 3.1 операциялық жүйесінің шығуымен 16 биттік NE форматтарынан PE форматына көшті. Windows 95/98/ME және Windows 3.1x-ке қосылған Win32s-ті қоса алғанда, Windows-тың барлық келесі нұсқалары осы файл құрылымын қолдайды. Формат DOS негізделген және NT жүйелері арасындағы үйлесімділікті сақтау үшін шектеулі мұралық қолдауды сақтап келді. Мысалы, PE/COFF басқаларында DOS-та орындалатын бағдарлама әлі де бар, ол әдетте "Бұл бағдарламаны DOS режимінде іске қосу мүмкін емес" (немесе осыған ұқсас) деген хабарламаны көрсететін DOS-тың бастапқы коды, бірақ ол бағдарламаның толыққанды DOS нұсқасы болуы мүмкін (кейінірек Windows 98 SE орнатушысы осылай болды). Бұл екі түрлі форматқа ие болуды білдіреді. PE Windows платформасының өзгеріп отыруына да қызмет ете береді. Кейбір кеңейтімдерге NET PE форматы (төменде қараңыз), 64 биттік адрестік кеңістікті қолдайтын PE32+ және Windows CE үшін техникалық талаптар кіреді.

Орналасу

PE файлы динамикалық байланыстырушыға файлды жадқа қалай орналастыру керектігін көрсететін бірнеше қабағалар мен бөлімдерден тұрады. Орындалатын кескін әртүрлі аймақтардан тұрады, олардың әрқайсысы әртүрлі жадты қорғауды талап етеді; сондықтан әр бөлімнің басталуы бет шегіне сәйкес келуі керек. Мысалы, әдетте мәтін бөлімі (бағдарлама кодын қамтиды) орындау/оқу ретінде ғана картаға түсіріледі, ал деректер бөлімі (жаһандық айнымалыларды қамтиды) орындаусыз/оқу-жазу ретінде картаға түсіріледі. Дегенмен, орынды ысырап етуді болдырмау үшін әртүрлі бөлімдер дискіде бетке қарай тікелей орналастырылмайды. Динамикалық байланыстырушының жұмысының бір бөлігі – әр бөлімді жадқа жеке-жеке карталау және нәтижедегі аймақтарға қабағалардағы нұсқауларға сәйкес дұрыс рұқсаттарды тағайындау.

Импорттық кесте

Бір бөлім – импорттық адрестік кесте (IAT), ол қолданба басқа модульдегі функцияны шақырған кезде анықтамалық кесте ретінде қолданылады. Ол реттік нөмір бойынша және атау бойынша импорт түрінде болуы мүмкін. Құрастырылған бағдарлама өзіне тәуелді кітапханалардың жад мекенжайын біле алмайтындықтан, API шақырылған сайын тура емес секіру қажет. Динамикалық байланыстырушы модульдерді жүктеп, біріктіргенде, ол IAT ұяшықтарына нақты мекенжайларды жазады, осылайша олар тиісті кітапхана функцияларының жад орналасқан жеріне сілтеме жасайды. Бұл модуль ішіндегі шақыруға қарағанда қосымша секіруді қосады, нәтижесінде өнімділік төмендейді, бірақ маңызды артықшылықты қамтамасыз етеді: жүктеуші өзгертетін жад беттерінің көшірмелеу қажеттігінің саны азаяды, соның салдарынан жад және дискіге кіріс-шығыс уақыты үнемделеді. Егер компилятор шақырудың модульдер арасында болатынын алдын ала білсе (dllimport атрибуты арқылы), ол жай ғана тура емес шақыру операциялық кодын құратын оңтайландырылған кодты жасай алады. PE басқасының деректер каталогына енгізіледі. IMAGE COR20 HEADER PE-нің қосымша басқасымен ұқсас, негізінен CLR жүктеуішінің рөлін атқарады. Mac OS X 10.5 PE файлдарын жүктеу және талдау мүмкіндігіне ие, бірақ Windows-пен толық үйлесімді емес. UEFI және EFI микропрограммасы Portable Executable файлдарын, сондай-ақ Windows ABI x64 шақыру конвенциясын қолданады.