Nan Red Hat
Nan etap aktyèl la nan devlopman, tradiktè nan reprezantasyon entèmedyè MIR yo prepare pou
Kòd MIR entèmedyè a ka prezante nan fòm binè ak tèks (lizib). Kòd sa a ka egzekite nan yon entèprèt epi kòd machin yo ka pwodwi ki baze sou li (x86_64, nan plan ARM64, PPC64 ak MIPS64). Li posib tou pou fè konvèsyon ranvèse - soti nan MIR nan CIL, Java bytecode, WebAssembly ak kòd C.
Pami karakteristik yo nan MIR, sezisman strik, sipò pou modil ak fonksyon, dispozisyon yon seri enstriksyon pou konvèsyon kalite, konparezon, operasyon aritmetik ak lojik, branch, elatriye. Modil, ki gen ladan yon seri fonksyon konvèti nan fòma MIR, yo ka chaje nan fòm bibliyotèk, epi yo ka chaje ekstèn kòd C.
Avantaj kle nan egzekite kòd entèmedyè nan JIT olye pou yo konpile nan dosye natif natal ègzèkutabl se kapasite nan jenere dosye kontra enfòmèl ant ki ka egzekite san yo pa rebati sou diferan achitekti pyès ki nan konpitè (x86, ARM, PPC, MIPS). Pou achitekti ki pa sipòte, yon mòd entèpretasyon ki disponib, ki nan ka MIR se 6-10 fwa pi dousman pase JIT.
Dezavantaj ki deja egziste konpilateur JIT
GCC ak LLVM yo di yo twò gonfle, gen vitès konpilasyon ki ba, epi yo difisil pou aplike optimize konbine pou diferan lang pwogramasyon. Devlopè MIR yo te eseye rezoud sa yo
pwoblèm ak fikse objektif:
- Konpilasyon nan MIR ta dwe omwen 100 fwa pi vit pase nan GCC;
- JIT pou ekzekisyon MIR dwe trè kontra e li dwe genyen apeprè 15 mil liy kòd;
- Egzekite MIR lè l sèvi avèk JIT ta dwe pa plis pase 30% pi dousman pase pèfòmans nan yon ègzèkutabl konpile nan menm kòd C nan GCC (ak "-O2" optimize);
- Etap inisyalizasyon yo anvan egzekisyon aktyèl la kòmanse ta dwe pran 100 fwa mwens tan;
- Reprezantasyon MIR pou JIT dwe 100 fwa pi piti pase ègzekutabl konpile nan GCC.
Nan fòm li ye kounye a, aplikasyon MIR a se nan plizyè fason devan objektif yo okòmansman te fikse: tès yo te montre ke pèfòmans konpilasyon nan MIR se 2 fwa pi vit pase "GCC -O178", pèfòmans ekzekisyon se 6% dèyè kòd natif natal, gwosè kòd la. se 144 fwa pi piti, aplikasyon MIR JIT se 16 mil liy kòd.
Sous: opennet.ru