Retargeting - Retargeting
În ingineria software , retargeting-ul este un atribut al instrumentelor de dezvoltare software care au fost special concepute pentru a genera cod pentru mai multe platforme de calcul.
Compilatoare
Un compilator retargetable este un compilator care a fost conceput pentru a fi relativ ușor de modificat pentru a genera cod pentru diferite arhitecturi de seturi de instrucțiuni CPU . Istoria acestei idei datează din anii 1950, când UNCOL a fost propus ca limbaj intermediar universal. Compilatorul P Pascal este un exemplu de compilator retargetable utilizat pe scară largă.
Costul producerii unui compilator retargetable care generează cod de calitate similară cu un compilator non-retargetable (adică unul conceput să producă vreodată cod pentru un singur procesor) este mai mare, deoarece nu este posibil să se utilizeze detalii specifice CPU pe toate fazele compilării. Avantajele unui compilator retargetable este că costul total pentru mai multe procesoare este mult mai mic decât costul combinat al multor compilatoare individuale care nu pot fi vizate.
Unele compilatoare retargetable, de exemplu, GCC , au devenit atât de larg portate și dezvoltate încât includ acum suport pentru multe optimizări și detalii specifice mașinii, încât calitatea codului depășește adesea cea a compilatoarelor non-retargable de pe multe procesoare.
Un optimizator global cu scop general, urmat de o optimizare peephole specifică mașinii este o tehnică de implementare utilizată în mod obișnuit. Optimizarea codului pentru unele procesoare de înaltă performanță necesită o cunoaștere detaliată și specifică a arhitecturii și a modului în care sunt executate instrucțiunile. Cu excepția cazului în care dezvoltatorii investesc cantitatea mare de timp necesară pentru a scrie un generator de cod special pentru o arhitectură, optimizările efectuate de un compilator retargetable vor fi doar cele aplicabile caracteristicilor generice ale procesorului.
Un compilator retargetable este un fel de compilator încrucișat . Adesea (dar nu întotdeauna) un compilator retargetable este portabil (compilatorul în sine poate rula pe mai multe procesoare diferite) și auto-găzduire .
Exemple de compilatoare retargetable:
- GCC
- ACK
- lcc
- VBCC
- Compilator portabil C
- SDCC
- LLVM
- Small-C compilator
- MPG, „generatorul de microprograme eficient independent de mașină”
Decompilator
retdec („Retargetable Decompiler”) este un decompilator de cod de mașină retargetable open source bazat pe LLVM .
- Decompilatorul nu este limitat la nicio arhitectură țintă specială, sistem de operare sau format de fișier executabil:
- Formate de fișiere acceptate: ELF, PE, Mach-O, COFF, AR (arhivă), Intel HEX și cod brut al mașinii.
- Arhitecturi acceptate (în prezent doar pe 32 de biți): Intel x86, ARM, MIPS, PIC32 și PowerPC.
Asamblatori
În schimb, asamblatoarele reglabile sunt capabile să genereze fișiere obiect de diferite formate, ceea ce este util în portarea programelor de limbaj de asamblare pe diferite sisteme de operare care rulează pe aceeași arhitectură CPU (cum ar fi Windows și Linux pe platforma x86 ). NASM este un astfel de ansamblu.
Lecturi suplimentare
- Un compilator C retargetable: Proiectare și implementare ( ISBN 0-8053-1670-1 )