కంప్యూటర్లుప్రోగ్రామింగ్

బ్రాడ్కాస్టర్ - ఉంది ... కంపైలర్లు రకాలు. మార్చండి మరియు ప్రసారం కార్యక్రమాలు

కార్యక్రమాలు, అలాగే ప్రజలు ఒక భాష నుండి మరొక అనువదించడానికి ఒక వ్యాఖ్యాత లేదా అనువాదకుడు అవసరం.

ప్రాథమిక భావనలు

కార్యక్రమం లెక్కల ఒక భాషా ప్రాతినిథ్యం: i → పి → P (i). ఒక వ్యాఖ్యాత ఇన్పుట్ కార్యక్రమం P మరియు కొన్ని ఇన్పుట్ x సరఫరా ఒక కార్యక్రమం. ఇది పి x వద్ద అమలు: నేను (P, x) = P (x). అక్కడ ఒకే ఒక అనువాదకుడు (క్రమబద్ధ వ్యవస్థ లో ప్రాతినిధ్యం ఇది) అన్ని సాధ్యం కార్యక్రమాలు చేస్తూ సామర్ధ్యం ఉంది వాస్తవం చాలా లోతైన మరియు ముఖ్యమైన ఆవిష్కరణ ట్యూరింగ్ ఉంది.

ప్రాసెసర్ యంత్రం భాషలో కార్యక్రమాలను ఒక వ్యాఖ్యాత ఉంది. సాధారణంగా వారు అర్థం సులభం ఒక రూపం లోకి అనువదిస్తుంది కాబట్టి, అధిక స్థాయి భాషలకు వ్యాఖ్యాతల రాయడానికి చాలా ఖరీదైనది.

కొంతమంది అనువాదకులు రకాల చాలా వింత పేర్లు ఉన్నాయి:

  • సమీకరించేది మిషన్ భాష లోకి అసెంబ్లీ భాషా కార్యక్రమాలు అనువదించారు.
  • కంపైలర్ తక్కువ భాషకు ఒక ఉన్నత స్థాయి భాష అనువదించారు.

పి → X → ప్ర అంటే, ∀x: - బ్రాడ్కాస్టర్ వారిద్దరూ ఒకే సెమాంటిక్స్ కలిగి విధంగా కొన్ని భాష S లో కార్యక్రమం ఇన్పుట్ డేటా వంటి పడుతుంది మరియు ఉత్పత్తి చేసే T కార్యక్రమం ఒక కార్యక్రమం. P (x) = Q (x).

వివరించునట్లుగా ఏదో లోకి మొత్తం కార్యక్రమం ప్రసారం చేస్తే, అది అమలు, లేదా AOT సంగ్రహం ముందు సంగ్రహం అంటారు. AOT కంపైలర్ సిరీస్లో ఉపయోగించవచ్చు, వీటిలో రెండో తరచుగా ఉదాహరణకు అసెంబ్లర్ ఉంది:

సోర్స్ కోడ్ కంపైలర్ → (అనువాదకుడు) → → అసెంబ్లీ కోడ్ సమీకరించేది (కంపైలర్) → → CPU యంత్రం కోడ్ (వ్యాఖ్యాత).

ఇతర గతంలో సంకలనం భాగంగా పెట్టినపుడు కార్యక్రమం ప్రసారం ఉంటే ఆపరేషనల్ లేదా డైనమిక్ సంగ్రహం ఏర్పడుతుంది. JIT-కంపైలర్లు మళ్లీ మళ్లీ సోర్స్ కోడ్ పునరావృతం లేదు కాబట్టి వారు ఇప్పటికే చేసిన గుర్తు. వారు కూడా అనుకూల సంగ్రహం మరియు పునఃనిర్వర్తనను అవసరపడవచ్చు కార్యక్రమం అమలు వాతావరణంలో ప్రవర్తన ఆధారంగా ఉత్పత్తి చేయవచ్చు.

అనేక భాషలు, స్వరపరిచే సమయం వద్ద కోడ్ అమలు మరియు రన్టైమ్ వద్ద కొత్త కోడ్ కంపైల్ అనుమతిస్తాయి.

అనువాదం దశలో

బ్రాడ్కాస్ట్ విశ్లేషించడం మరియు సంశ్లేషణ మెట్లపై మందిలో:

సోర్స్ కోడ్ విశ్లేషణము → → → సంభావిత ప్రాతినిధ్యం జెనరేటర్ (సింథసైజర్) → టార్గెట్ కోడ్.

ఈ ఈ కారణాల కారణంగా:

  • ఏ ఇతర పద్ధతి సరైనది కాదు. పద అనువాదం కేవలం పనిచేయదు.
  • మంచి ఇంజనీరింగ్ పరిష్కారం: మీరు లక్ష్యంగా మాత్రమే M + N సాధారణ కార్యక్రమాలు (polukompilyatorov) వ్రాయడానికి అవసరం M మరియు N మూల భాషలను కాకుండా M × N సంక్లిష్ట కంటే అనువాదకుల (అనువాదకుల మొత్తం) రాయాలనుకుంటున్నాను ఉంటే.

అయితే, ఆచరణలో, ఒక చాలా అరుదుగా తగినంత వ్యక్తీకరణ మరియు తగినంత శక్తివంతమైన ఒక సంభావిత కోణం అన్నిరకాల మూలం మరియు లక్ష్యం భాషలు కవర్ చేయడానికి. కొన్ని ఈ దగ్గరగా వచ్చి పోయారు చేస్తున్నప్పుడు.

రియల్ కంపైలర్లు అనేక దశల్లో గుండా. మీ సొంత కంపైలర్ సృష్టించేటప్పుడు ప్రజలు ప్రాతినిధ్యాలు, జనరేటర్ల సృష్టించడానికి చేసిన అన్ని హార్డ్ పని పునరావృతం అవసరం లేదు. మీరు JavaScript లేదా C నేరుగా మీ భాష అనువాదం మరియు ఇప్పటికే జావాస్క్రిప్ట్ ఇంజిన్ మరియు మిగిలిన చేయాలని సి కంపైలర్ పొందగలరు. మీరు కూడా ఇప్పటికే ఇంటర్మీడియట్ ప్రాతినిధ్యం మరియు ఉపయోగించడానికి చేయవచ్చు వర్చ్యువల్ మిషన్ల.

రికార్డు అనువాదకుడు

మూలం, గమ్యం మరియు బేస్: - బ్రాడ్కాస్టర్ మూడు భాషలు పాల్గొన్న ఒక ప్రోగ్రామ్ లేదా హార్డ్ వేర్, ఉంది. అవి క్రింద అసలు ఎడమ, కుడి మరియు టార్గెట్ బేస్ ఉంచడం, ఒక టీ-ఆకారంలో వ్రాయవచ్చు.

కంపైలర్లు మూడు రకాలు ఉన్నాయి:

  • బ్రాడ్కాస్టర్ - ఇది ప్రాథమిక మూల భాష అనుగుణంగా ఉంటే samokompilyator ఉంది.
  • భాష లక్ష్యంగా కంపైలర్ ఆధార, samorezidentnym అని పిలుస్తారు.
  • బ్రాడ్కాస్టర్ - ఒక క్రాస్-కంపైలర్, అతను లక్ష్యంగా ఉంటే మరియు ప్రాథమిక వివిధ భాషలు.

ఎందుకు ఈ ముఖ్యం?

కూడా ఈ ప్రయోజనం కోసం ఉపయోగిస్తారు భావన ఉదాహరణకు విస్తృతంగా ఉపయోగిస్తున్నారు ఎందుకంటే మీరు, ఒక నిజమైన కంపైలర్ దాని సృష్టి యొక్క సాంకేతిక పరిజ్ఞానం ఒక మంచి జ్ఞానం తయారు ఎప్పుడూ ఉంటే:

  • ఫార్మాటింగ్ టెక్స్ట్;
  • భాష ప్రశ్నలను డేటాబేస్లు;
  • ఆధునిక కంప్యూటర్ ఆర్కిటెక్చర్;
  • సాధారణమైన ఆప్టిమైజేషన్ సమస్యలు;
  • GUI లు;
  • స్క్రిప్టింగ్ భాషలు;
  • కంట్రోలర్లు;
  • వర్చ్యువల్ మిషన్ల;
  • యంత్ర అనువాదం.

అదనంగా, మీరు preprocessors, linkers, లోడర్ల, డీబగ్గర్సును మరియు ప్రొఫైలెర్స్ రాయడానికి మీరు అనుకుంటే, మీరు ఒక కంపైలర్ రాసేటప్పుడు అదే దశలను ద్వారా వెళ్లాలి.

మీరు కూడా భాషకు అనువాదకుడు సృష్టి దాని చిక్కులతో మరియు సందేహాల ఒక మంచి అవగాహన అంటే నుండి, మంచి కార్యక్రమాలు రాయడానికి ఎలా తెలుసుకోవచ్చు. ప్రసార సాధారణ సూత్రాలు అధ్యయనం కూడా మీరు ఒక మంచి డిజైనర్ భాషగా మారింది అనుమతిస్తుంది. కాబట్టి ఎలా నిటారుగా భాష అది సమర్థవంతంగా అమలు సాధ్యం కాదు ఉంటే పట్టింపు లేదు?

సమగ్ర సాంకేతికత

కంపైలర్ టెక్నాలజీ కంప్యూటర్ సైన్స్ యొక్క అనేక విభాగాల్లో వర్తిస్తుంది:

  • భాష యొక్క క్రమబద్ధ సిద్ధాంతంలో: వ్యాకరణం, పార్సింగ్, కంప్యూటబిలిటీ;
  • కంప్యూటర్ ఆర్కిటెక్చర్:. సూచనల సెట్లు, RISC లేదా CISC, పైప్లైన్లోని ప్రాసెసింగ్ కోర్ క్లాక్ ఆవర్తనాల, etc;
  • ప్రోగ్రామింగ్ భాషలు భావనలు, ఉదాహరణకు, ఒక క్రమం నియంత్రణ, నియత అమలు, మళ్ళా, సూత్రం, ఫంక్షనల్ శైథిల్యాన్ని విధం, సమకాలీకరణ, మెటా-ప్రోగ్రామింగ్, స్కోప్, స్థిరంగా ఉప రకాల, టెంప్లేట్లు, అవుట్పుట్ రకం, నమూనాలను, వ్యాఖ్యానాలను, ప్రవాహం, మోనాడ్స్, మెయిల్ బాక్స్ ప్రదర్శన, కొనసాగుతుంది , వైల్డ్, సాధారణ వ్యక్తీకరణకు, లావాదేవీ మెమరీ వారసత్వ సంక్రమణ పాలిమార్ఫిజంగా, మోడ్ సెట్టింగులను మరియు అందువలన న etc..;
  • నైరూప్య భాషలు మరియు వర్చ్యువల్ మిషన్ల;
  • అల్గోరిథంలు మరియు డేటా నిర్మాణాలు: సాధారణ వ్యక్తీకరణలను, అన్వయించడం అల్గోరిథంలు గ్రాఫిక్స్ అల్గోరిథంలు డైనమిక్ ప్రోగ్రామింగ్, శిక్షణ;
  • ప్రోగ్రామింగ్ భాషలు: వాక్యనిర్మాణం, సెమాంటిక్స్ (స్టాటిక్ మరియు డైనమిక్), మద్దతు నమూనాలు (నిర్మాణ, OOP, క్రియాత్మక, తార్కిక, స్టాక్, సమాంతరత, మెటా-ప్రోగ్రామింగ్);
  • సృష్టి సాఫ్ట్వేర్ (కంపైలర్లు, సాధారణంగా పెద్ద మరియు క్లిష్టమైన): స్థానికీకరణ, చేజింగ్, componentize, API-ఇంటర్ఫేస్లు, తిరిగి ఉపయోగించడానికి, సమకాలీకరణ.

కంపైలర్ డిజైన్

నిజమైన అనువాదకుడు అభివృద్ధిలో ఎదురైన సమస్యల కొన్ని:

  • మూల భాష ఇబ్బందులు. అది కంపైల్ సులభం? ఒక ప్రాసెసర్ ఉంది? ఎలా రకాలు? ఒక లైబ్రరీ ఉంది?
  • కంపైలర్ పాస్లు గ్రూపింగ్: ఒకే లేదా బహుళ-మార్గం?
  • ఆప్టిమైజేషన్ యొక్క డిగ్రీ కావలసిన. కొద్దిగా లేదా సంఖ్య ఆప్టిమైజేషన్ తో ఫాస్ట్ మరియు అపరిశుభ్రమైన ప్రసార కార్యక్రమాలు సాధారణ ఉంటుంది. ఓవర్-ఆప్టిమైజేషన్ కంపైలర్ నెమ్మది, కానీ రన్టైమ్ వద్ద మంచి కోడ్ అది విలువ ఉంటుంది.
  • ఎర్రర్ డిటెక్షన్ అవసరమైన డిగ్రీ. ఒక అనువాదకుడు కేవలం మొదటి లోపం మానివేయవచ్చు? అది ఆపడానికి వచ్చినపుడు? కంపైలర్ లోపం దిద్దుబాటు విశ్వసించాలని లేదో?
  • టూల్స్ లభ్యత. అసలు భాష చాలా చిన్న కాదు ఉంటే, స్కానర్ మరియు జెనరేటర్ ఎనలైజర్లు అవసరం. జనరేటర్లు, కోడ్ జనరేటర్లు కూడా ఉన్నాయి, కానీ వారు సాధారణ కాదు.
  • లక్ష్యం కోడ్ రకం ఉత్పత్తి చేయడానికి. స్వచ్ఛమైన అనుబంధంగా లేదా వర్చ్యువల్ మిషన్ కోడ్ నుండి ఎంచుకుంటారు. లేదా కేవలం వంటి LLVM, RTL, లేదా జెవిఎం ఒక ప్రముఖ ఇంటర్మీడియట్ ప్రాతినిధ్యం సృష్టిస్తుంది ఒక ఎంట్రీ భాగం వ్రాయండి. లేదా C లేదా జావాస్క్రిప్ట్ సోర్స్ కోడ్ లో ఒక అసలు అనువాద చేయడానికి.
  • లక్ష్యం కోడ్ ఫార్మాట్. మీరు ఎంచుకోవచ్చు ఒక అసెంబ్లీ భాష, ఒక పోర్టబుల్ యంత్రం కోడ్, యంత్రం కోడ్ మెమరీ చిత్రం.
  • Retargeting. జనరేటర్లు సమితి బాగుంది ఉన్నప్పుడు సాధారణ ఇన్లెట్ భాగం కలిగి. దానికోసం అనేక ప్రాంతాల్లో ఇన్పుట్ కోసం ఒక జెనరేటర్ కలిగి ఉత్తమం.

కంపైలర్ ఆర్కిటెక్చర్: భాగాలు

ఈ స్థానిక కోడ్ సృష్టించే (అవుట్పుట్ కార్యక్రమం సి లేదా ఒక వాస్తవ యంత్రం ఒక కార్యక్రమం ఉంటే, మీరు చాలా దశల్లో అవసరం) ఒక కంపైలర్ ప్రధాన ఫంక్షనల్ భాగాలు ఉన్నాయి:

  • ఇన్పుట్ కార్యక్రమం (ప్రవాహ మార్కులు) టోకెన్ల ప్రవాహం గా మారుస్తుంది ఇది స్కానర్ (శబ్దకోశ విశ్లేషణా), ఉంచుతారు.
  • పార్సర్ (పార్సర్) ఒక నైరూప్య వాక్యనిర్మాణం చెట్టు నిర్మిస్తోంది.
  • సెమాంటిక్ విశ్లేషణము అర్థ సమాచారాన్ని వియోగం మరియు లోపాలు కోసం చెట్టు నోడ్స్ వెతుకుతుంది. అదనపు లక్షణాలు మరియు స్థిరపడిన లింకులు నైరూప్య వాక్యనిర్మాణం చెట్టు - ఒక ఫలితంగా, అర్థ గ్రాఫ్ నిర్మించారు.
  • ఇంటర్మీడియట్ కోడ్ జెనరేటర్ ఒక ప్రవాహం గ్రాఫ్ (టుపుల్స్ ప్రధాన వర్గాలు విభజించారు) రూపొందించారు.
  • యంత్రము స్వతంత్ర సంకేత ఆప్టిమైజర్ ప్రాథమికంగా నిత్యకృత్యాలను లోనే స్థానిక (బేస్ యూనిట్ లోపల) మరియు ప్రపంచ (అన్ని బ్లాక్స్) ఆప్టిమైజేషన్ రెండు నిర్వహిస్తుంది. పునరావృత కోడ్ తగ్గిస్తుంది మరియు లెక్కల సులభతరం. ఫలితంగా ఒక చివరి మార్పు ప్రవాహం గ్రాఫ్.
  • జనరేటర్ (బహుశా అసమర్థ) ఒక వస్తువు ఫైలు సమీకరించేది వాస్తవిక రిజిస్టర్ల సృష్టించడం, లక్ష్యం కోడ్ ప్రాథమిక బ్లాక్స్ బంధిస్తుంది ఒక సరళరేఖాత్మకం ట్రాన్స్మిషన్ కంట్రోల్ కోడ్ లోకి.
  • యంత్రము ఆధారపడి ఆప్టిమైజర్, లింకర్ రిజిస్టర్ల మధ్య మెమరీ కేటాయించుకునే మరియు ప్రణాళిక జట్లు చేస్తుంది. ఇది పైప్లైనింగ్ యొక్క ఒక మంచి ఉపయోగం ఈ అసెంబ్లీ అసెంబ్లీ భాషలో మార్పిడి కార్యక్రమం నిర్వహిస్తుంది.

అదనంగా, ఎర్రర్ డిటెక్షన్ ఉపవ్యవస్థలు మేనేజర్ మరియు చిహ్నం పట్టికలు ఉపయోగం.

నిఘంటు విశ్లేషణ (స్కానింగ్)

స్కానర్ టోకెన్లు తెల్లని తొలగించడం, వ్యాఖ్యలు మరియు విస్తరిస్తున్న macros ఒక ప్రవాహంలో ప్రసారం మూలాన్ని అక్షరాలు మారుస్తుంది.

స్కానర్లు తరచుగా ఖాతాలోకి కేసు, మార్జిన్లు, లైన్ బ్రేక్ మరియు ఎంబెడెడ్ వ్యాఖ్యలు తీసుకోవాలని లేదో వంటి సమస్యలు, పోటీపడుతున్నారు.

స్కానింగ్ సమయంలో సంభవించవచ్చు లోపాలు, నిఘంటు పిలిచి ఉన్నాయి:

  • వర్ణమాలలో లేని అక్షరాలు;
  • ఒక పదం లేదా లైన్ లో అక్షరాలు సంఖ్య అదనపు;
  • ఒక క్లోజ్డ్ సైన్ లేదా ఒక స్ట్రింగ్ సాహిత్య;
  • వ్యాఖ్యలో ఫైలు చివర.

పార్స్ (పార్సింగ్)

పార్సర్ ఒక నైరూప్య వాక్యనిర్మాణం చెట్టు లోకి టోకెన్ల క్రమం మారుస్తుంది. వృక్షంలో ఉండే ప్రతి కణుపు తాము చెట్టు నోడ్స్ ఇవి అనేక అనే ఖాళీలను, ఒక వస్తువు నిలువ ఉంటుంది. ఈ దశలో ఏ చక్రాల ఉన్నాయి. మీరు రూపొందించినప్పుడు ఒక పార్సర్ వ్యాకరణం (LL లేదా LR) యొక్క సంక్లిష్టత స్థాయి శ్రద్ద మరియు ఏ నియమాలు అయోమయ నివృత్తి ఉన్నాయి లేదో తెలుసుకోవడానికి అవసరం. కొన్ని భాషలు అర్థ విశ్లేషణ అవసరం.

ఈ దశలో దొరకలేదు లోపాలు వాక్యనిర్మాణం అంటారు. ఉదాహరణకు:

  • k = 5 * (7 - y;
  • j = / 5;
  • 56 = x * 4.

అర్థ విశ్లేషణ

సమయంలో అర్థ విశ్లేషణ పార్స్ ట్రీని నియమాలు మరియు అసోసియేట్ భాగాలను అనుమతించ తనిఖీ (అవ్యక్త రకం మార్పిడుల కోసం ఆపరేషన్ ఇన్సర్ట్ సూచన పేర్లను అనుమతిస్తుంది, మరియు అందువలన న. D.) అర్థ గ్రాఫ్ ఏర్పాటు కోసం.

సహజంగానే, వివిధ వివిధ భాషలలో నియమాలు అనుమతించదగు సమితి. మీరు జావా లాంటి భాషలు కంపైల్ ఉంటే, స్వరకర్తలు కనుగొనవచ్చు:

  • దాని పరిధిలో బహుళ వేరియబుల్ డిక్లరేషన్;
  • దాని ప్రకటనను ముందు ఒక వేరియబుల్ ఒక సూచన;
  • అస్పష్టమైన పేరు సూచనలు;
  • పేటెంట్ హక్కుల ఉల్లంఘన;
  • ఒక పద్ధతి కాల్ లో వాదనలు అధిక లేదా చాలని సంఖ్య;
  • వర్గం జత.

తరం

ఇంటర్మీడియట్ కోడ్ తరం టుపుల్స్ కూడి ప్రవాహం గ్రాఫ్, ప్రాథమిక బ్లాక్స్ విభజించారు ఉత్పత్తి చేస్తుంది.

కోడ్ తరం నిజమైన యంత్రం కోడ్ ఉత్పత్తి చేస్తుంది. మొదటి అడుగు RISC-యంత్రాలు కోసం సంప్రదాయ కంపైలర్లు, మీరు వాస్తవిక నమోదుల అసంఖ్యాక ఒక సమీకరించేది సృష్టించడానికి. CISC-యంత్రాలు కోసం బహుశా జరిగే లేదు.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 te.delachieve.com. Theme powered by WordPress.