Դեկոմպիլյատոր

Դեկոմպիլյատորը   ծրագիր է, որը տրանսլյացվում է կատարվող մոդուլը ՝ (կոմպիլյացիայի ելքում ստացված ) սկզբանկան կոդը   բարձր մակարդակի ծրագրավորման լեզվի։

Դեկոմպիլյացիան, պրոցեսս է որը դեկոմպիլյատորով վերստեղծումն է սկզբնական կոդը։

Դեկոմպիլյացիան մասնավորապես օգտագործում են ծրագրի հակառակ մշակաման(Reverse engineering) դեպքում։

Դեկոմպիլյացիայի «հաջողությունը» կախված է ներկայացված կոդի ինֆորմացիայի ծավալից։ Բայթկոդը,որը օգտագործվում է վիրտուալ մեքենաների մեծամասնության կողմից  (օր.`Java Virtual Machine կամ  .NET Framework Common Language Runtime) հաճախ պարունակում են լայն մետատվյալներ, մինչդեռ մեքենայական կոդը ավելի բարդ է դեկոմպիլացվում։ Հիմնականում դժվար կարդացվող են համարվում այն կանչերը, որոնք կատարվում են ենթածրագրից կամ անուղղակի հասցեավորմամբ ( բարձր մակարդակի ծրագրավորման լեզուներում ֆունկցիայի կամ պրոցեդուրաների ցուչիրներ)։

Եթե հայտնի է, թե որ լեզվով է գրված եղել դեկոմպիլացվող ծրագիրը, ապա առաջին հերթին հետազոտվում է Run-time գրադարանը, քանի որ հիմնականում ծրագրի կոմպիլյացիան այդ գրադարանում պրոցեդուրաների կանչերի հետ է կապվում։ Բացի դրանից շատ կոմպիլյատորներ թույլ են տալիս տեսնել, թե ինչ ասսեմբլերական կոդի են վերածվում ծրագրի օպերատորները կոմպիլյացիայից հետո։ Ամենահեշտը տարբերվում են պրոցեդուրաների կանչերը և նրանցից վերադարձը։

Որոշ կոմպիլյատորներ և կոմպիլյացիայից հետո օգտագործվող գործիքներ ծրագրային կոդը ենթարկում են օբֆուսկացիայի ` դեկոմպիլյացիան դժվարացնելու համար։

Դեկոմպիլյատորների օրինակներ 
 FernFlower
 .NET Reflector, dotPeek —  .NET հավաքների կոմպիլյացիայի համար
 ILSpy
 Delphi Decompiler
 JAD — JAva Decompiler
 VB Decompiler —  Visual Basic 6.0-ի համար

Հղումներ 

 Basics of Compiler Design 
 Language Implementation Patterns 

Կազմարկիչներ