Red Hat వద్ద
ప్రస్తుత అభివృద్ధి దశలో, MIR యొక్క ఇంటర్మీడియట్ ప్రాతినిధ్యంలో అనువాదకులు సిద్ధంగా ఉన్నారు
ఇంటర్మీడియట్ MIR కోడ్ బైనరీ మరియు టెక్స్ట్ (చదవగలిగే) రూపంలో ప్రదర్శించబడుతుంది. ఈ కోడ్ను ఇంటర్ప్రెటర్లో అమలు చేయవచ్చు మరియు దాని ఆధారంగా మెషిన్ కోడ్ను రూపొందించవచ్చు (x86_64, ARM64, PPC64 మరియు MIPS64 ప్లాన్లలో). MIR నుండి CIL, Java బైట్కోడ్, WebAssembly మరియు C కోడ్కు - రివర్స్ కన్వర్షన్ చేయడం కూడా సాధ్యమే.
MIR యొక్క లక్షణాలలో, కఠినమైన టైపింగ్, మాడ్యూల్స్ మరియు ఫంక్షన్లకు మద్దతు, టైప్ కన్వర్షన్ కోసం సూచనల సమితిని అందించడం, పోలిక, అంకగణితం మరియు తార్కిక కార్యకలాపాలు, శాఖలు మొదలైనవి. MIR ఆకృతికి మార్చబడిన ఫంక్షన్ల సమితిని కలిగి ఉన్న మాడ్యూల్స్, లైబ్రరీల రూపంలో లోడ్ చేయబడతాయి మరియు బాహ్య C కోడ్ను కూడా లోడ్ చేయగలవు.
స్థానిక ఎక్జిక్యూటబుల్ ఫైల్లలోకి కంపైల్ చేయడానికి బదులుగా JITలో ఇంటర్మీడియట్ కోడ్ను అమలు చేయడం యొక్క ముఖ్య ప్రయోజనం ఏమిటంటే, విభిన్న హార్డ్వేర్ ఆర్కిటెక్చర్లపై (x86, ARM, PPC, MIPS) పునర్నిర్మించకుండానే అమలు చేయగల కాంపాక్ట్ ఫైల్లను రూపొందించగల సామర్థ్యం. మద్దతు లేని ఆర్కిటెక్చర్ల కోసం, ఇంటర్ప్రెటేషన్ మోడ్ అందుబాటులో ఉంది, ఇది MIR విషయంలో JIT కంటే 6-10 రెట్లు నెమ్మదిగా ఉంటుంది.
ఇప్పటికే ఉన్న JIT కంపైలర్ల యొక్క ప్రతికూలతలు
GCC మరియు LLVMలు అతిగా ఉబ్బినవి, తక్కువ సంకలన వేగం కలిగి ఉంటాయి మరియు వివిధ ప్రోగ్రామింగ్ లాంగ్వేజ్ల కోసం కంబైన్డ్ ఆప్టిమైజేషన్లను అమలు చేయడం కష్టం. MIR డెవలపర్లు వీటిని పరిష్కరించడానికి ప్రయత్నించారు
సమస్యలు మరియు లక్ష్యాలను నిర్దేశించుకోండి:
- MIRలో సంకలనం GCC కంటే కనీసం 100 రెట్లు వేగంగా ఉండాలి;
- MIR అమలు కోసం JIT చాలా కాంపాక్ట్గా ఉండాలి మరియు దాదాపు 15 వేల లైన్ల కోడ్ను కలిగి ఉండాలి;
- JITని ఉపయోగించి MIRని అమలు చేయడం GCC ("-O30" ఆప్టిమైజేషన్లతో) అదే C కోడ్ నుండి కంపైల్ చేయబడిన ఎక్జిక్యూటబుల్ పనితీరు కంటే 2% కంటే ఎక్కువ నెమ్మదిగా ఉండకూడదు;
- అసలు అమలు ప్రారంభం కావడానికి ముందు ప్రారంభ దశలు 100 రెట్లు తక్కువ సమయం పడుతుంది;
- JIT కోసం MIR ప్రాతినిధ్యం తప్పనిసరిగా GCCలో కంపైల్ చేయబడిన ఎక్జిక్యూటబుల్ కంటే 100 రెట్లు తక్కువగా ఉండాలి.
దాని ప్రస్తుత రూపంలో, MIR అమలు ప్రారంభంలో నిర్దేశించబడిన లక్ష్యాల కంటే అనేక విధాలుగా ముందుంది: MIRలో సంకలన పనితీరు “GCC -O2” కంటే 178 రెట్లు వేగంగా ఉందని పరీక్షలు చూపించాయి, అమలు పనితీరు స్థానిక కోడ్ కంటే 6% వెనుకబడి ఉంది, కోడ్ పరిమాణం 144 రెట్లు చిన్నది, MIR అమలు JIT 16 వేల లైన్ల కోడ్.
మూలం: opennet.ru