КомпьютерПрограмчлалын

Телевиз - ... хөрвүүлэгчдийг төрөл юм. Convert болон өргөн нэвтрүүлгийн хөтөлбөр

Хөтөлбөр, түүнчлэн хүн тайлбарлагчийг эсвэл орчуулагч хэрэгтэй нэг хэлнээс нөгөө рүү орчуулах.

үндсэн ойлголтууд

хөтөлбөр нь тооцоо нь хэл шинжлэлийн дүрслэл юм: Би → P → P (I). Хэлмэрч оруулах хөтөлбөрийн P, зарим оролт х нийлүүлж байгаа хөтөлбөр юм. Энэ нь P х д гүйцэтгэдэг: Би (P, X) = P (X). зөвхөн нэг л орчуулагч боломжтой бүх програмуудыг (албан ёсны системийн төлөөлөл болно) гүйцэтгэх чадвартай байдаг явдал нь маш гүн гүнзгий, ач холбогдолтой нээлт түлшээр юм.

процессортой машин хэлээр хөтөлбөрийн орчуулагч юм. , Өндөр түвшний хэлнүүдийн хувьд хэлмэрч бичих нь тайлбарлах илүү хялбар байдаг нь хэлбэр уруу орчуулах болохоор Ер нь хэтэрхий үнэтэй.

орчуулагч зарим төрлийн маш хачин нэртэй байна:

  • ассемблер угсралт хэл хөтөлбөр машин хэл рүү хөрвүүлнэ.
  • Хөрвүүлэгч нь бага хэлээр нь өндөр түвшний хэл хөрвүүлнэ.

P → X → Асуулт байна ∀x: - телевиз өгөгдөл оруулах гэж тэд аль аль нь ижил семантиксийг гэсэн ийм байдлаар Т хөтөлбөрийг зарим хэлний S програмыг авч, гаргадаг програм юм. P (X) = Q (X).

хувиргахад ямар нэгэн зүйл болгож бүрэн хөтөлбөрийг нэвтрүүлсэн бол, энэ нь гүйцэтгэл, эсвэл AOT эмхэтгэлийн өмнө эмхэтгэлийг гэж нэрлэдэг. AOT хөрвүүлэгч цуврал ашиглаж болно, сүүлийн ихэвчлэн Жишээ нь ассемблер юм:

эх код эмхэтгэгч → (орчуулагч) → → угсралт код нь ассемблер (хөрвүүлэгч) → → CPU-ийн машин код (орчуулагч).

бусад Өмнө нь хөрвүүлсэн хэсгийн гүйцэтгэж байхдаа хөтөлбөр, нэвтрүүлэг бол үйл ажиллагааны, эсвэл динамик эмхэтгэлийн тохиолддог. JIT-хөрвүүлэгчид нь шиг дахин дахин эх кодыг дахин давтахгүй байх нь аль хэдийн юу хийснийг санаж байна. Тэд ч гэсэн хөтөлбөрийн гүйцэтгэл орчны зан дээр тулгуурлан дасан зохицох эмхэтгэлийн болон recompilation гаргаж чаддаг байна.

Олон хэлээр эмхэтгэх үед кодыг ажиллуулах болон ажиллаж байх үед шинэ кодоо хөрвүүлэх боломжийг олгодог.

орчуулга үе шат

Өргөн нэвтрүүлгийн дүн шинжилгээ хийж, нэгтгэх нь алхам бүрдэнэ:

→ Зорилтот код эх код анализатор → → → үзэл баримтлалын илэрхийлэл үүсгүүр (синтезатор).

Энэ нь эдгээр шалтгааны улмаас байдаг:

  • Бусад аливаа арга нь тохиромжтой биш юм. Гэдэг үгийг орчуулах нь ердөө л ажиллаж байна.
  • Сайн инженерийн шийдэл: Та харин M × N цогцолбор илүү зөвхөн M + N энгийн хөтөлбөр (polukompilyatorov) бичих шаардлагагүй зорилтот M ба N эх хэл орчуулагч (орчуулагч нийт) бичихийг хүсэж байгаа бол.

Гэсэн хэдий ч, бодит байдал дээр хангалттай маш ховор илэрхийлэлтэй, хангалттай хүчирхэг нь үзэл баримтлалын үзэл бүр ойлгож эх үүсвэр, зорилтот хэл хамрах юм. Зарим Энэ ойрхон ирэх боломжтой байсан байна.

Бодит хөрвүүлэгчид нь олон үе шатыг дамжин өнгөрч. өөрийн хөрвүүлэгчийг үүсгэх үед хүмүүс төлөөлөл болон үүсгүүр бий болгох хийсэн бүх хэцүү ажил давтах хэрэгтэй биш юм. Та JavaScript буюу В-д шууд өөрийн хэлийг орчуулж, одоо байгаа JavaScript-хөдөлгүүр болон үлдсэнийг нь хийх нь С хөрвүүлэгч давуу талыг ашиглах боломжтой. Та бас одоо байгаа завсрын төлөөлөл болон ашиглаж болно виртуал машин.

бичлэг орчуулагч

эх үүсвэр, очих болон суурь: - өргөн нэвтрүүлгийн хөтөлбөр, эсвэл тоног төхөөрөмж, гурван хэл оролцож байна. Тэд дор эх зүүн, баруун, зорилтот баазыг байрлуулах, Т-хэлбэртэй бичиж болно.

хөрвүүлэгчдийг гурван төрөл байдаг:

  • Телевиз - энэ нь үндсэн эх үүсвэр хэл тохирдог уу samokompilyator юм.
  • хэл зорилтот Compiler суурь samorezidentnym гэж нэрлэдэг юм.
  • Телевиз - хөндлөн хөрвүүлэгч, тэр зорилтот уу, үндсэн янз бүрийн хэл.

Яагаад энэ чухал вэ?

Тэр ч байтугай энэ зорилгоор ашиглаж үзэл баримтлал нь жишээ нь, өргөн ашиглаж байна, учир нь та бол жинхэнэ хөрвүүлэгчийг, түүний бүтээлийн технологийн сайн мэдлэгтэй болгох нь хэзээ ч бол:

  • форматлах бичвэр;
  • хэл зүйлүүдийг мэдээллийн сан байх;
  • дэвшилтэт компьютерийн архитектур;
  • ерөнхий оновчлол асуудлууд;
  • GUIs;
  • скрипт хэл;
  • хянагчууд;
  • виртуал машин,
  • Машины орчуулга.

Үүнээс гадна, та хөрвүүлэлтэнд хэрэглэгддэг процессорууд, линкер, ачигч, дибаг хийгч болон profilers бичих хүсэж байгаа бол, Хэрэв та хөрвүүлэгчийг бичихдээ адил үе шатуудыг дамжин явах ёстой.

Мөн та хэрхэн илүү сайн хөтөлбөр бичиж хэлний орчуулагч бий болгох нь тавьснаараа болон бүрхэг илүү сайн ойлголттой үг оноос хойш сурч болно. өргөн нэвтрүүлгийн ерөнхий зарчмыг судлах нь бас таныг сайн загвар зохион бүтээгч хэл болох боломжийг олгодог. Тэгэхээр энэ нь хэр эгц энэ нь үр дүнтэй хэрэгжүүлж чадахгүй бол хэлний асуудал байна вэ?

иж бүрэн технологи

Хөрвүүлэгч технологи компьютерийн шинжлэх ухааны олон чиглэлийг хамардаг:

  • хэл нь албан ёсны онол: дүрэм, магадлах, Тооцоологдох;
  • компьютерийн архитектур:. зааварчилгаа багц, RISC буюу CISC, pipelined боловсруулах үндсэн цаг цикл, гэх мэт;
  • програмчлалын хэл ойлголт, жишээ нь, дараалал хяналт, нөхцөлт гүйцэтгэл, давталтын, рекурсын, функциональ задрал, бүтэцлэгдсэн, синхрончлол, мета-програмчлалын, хамрах хүрээ, тогтмол дэд төрөл, загвар, бүтээгдэхүүний төрөл, Прототип, товчлол, урсгал, monads, Шуудан хийж, үргэлжлүүлэн , орлуулагддаг тэмдэгтүүд, тогтмол илэрхийлэл, гүйлгээ санах ой, өв полиморфизм, горим тохиргоо гэх мэт..
  • хийсвэр хэл болон виртуал машин,
  • алгоритмууд болон өгөгдлийн бүтэц: тогтмол илэрхийлэл, магадлах алгоритм, график алгоритм, динамик програмчлалын, сургалт;
  • програмчлалын хэл дээр: синтакс, семантик (статик болон динамик), дэмжлэг ч загвар (бүтэц, OOP, үйл ажиллагааны, логик, стек, параллелизм, мета-програмчлалын);
  • үүсгэх програм хангамжийн (хөрвүүлэгчид, ихэвчлэн том, нарийн төвөгтэй): нутагшуулах, кэш, componentize, API-интерфэйсүүд, дахин ашиглах, синхрончлол.

хөрвүүлэгч нь зураг төсөл

Бодит орчуулагч хөгжилд тулгарсан асуудлыг зарим нь:

  • эх хэл дээр нь асуудал. үүнийг эмхэтгэх хялбар байдаг уу? нь процессор бий юу? төрөл байдаг вэ? номын сан бий юу?
  • хөрвүүлэгч дамжуулалт бүлгүүд: нэг эсвэл олон арга зам?
  • оновчтой болгох зэрэг хүссэн. бага эсвэл ямар ч оновчтой болгох нь хурдан, бузар өргөн нэвтрүүлгийн хөтөлбөр хэвийн байх болно. Хэт оновчлол хөрвүүлэгч удаашруулж болно, гэхдээ ажиллаж байх үед илүү сайн код үнэ цэнэтэй байж болно.
  • алдаа илрүүлэх шаардлагатай түвшин. орчуулагч зүгээр л эхний алдаа дэргэд зогсоож чадах вэ? Энэ нь зогсоох ёстой вэ? хөрвүүлэгч алдаа залруулах итгэх үү?
  • багаж хэрэгсэл байгаа эсэх. эх хэл нь маш бага биш байх юм бол, скан хийгчийн болон генератор анализатор шаардлагатай байна. генератор, код генератор бас байдаг, гэхдээ тэдгээр нь маш нийтлэг биш юм.
  • зорилтот кодын төрөл бий болно. цэвэр нэмэлт буюу виртуал машин кодоос сонгож болно. Эсвэл зүгээр л ийм LLVM, RTL, эсвэл JVM зэрэг алдартай завсрын төлөөллийг бий болгож орох хэсгийг бичиж байна. Эсвэл C эсвэл JavaScript эх кодыг эх нь орчуулга хийдэг.
  • зорилтот кодын формат. Та сонгож болно угсрах хэл, зөөврийн машин код, машин код санах ойн зураг.
  • Retargeting. генераторын багц сайн бол нийтлэг оролтын хэсгийг байх. Энэ шалтгааны улмаас энэ нь олон хэсгээс оролтод зориулж ашиглах нь нэг генератор байх нь хамгийн сайн арга юм.

Хөрвүүлэгч Архитектур: бүрэлдэхүүн хэсэг

Эдгээр эх кодыг үүсгэдэг (гаралт нь хөтөлбөрийн С буюу виртуал машин програм юм бол та тийм олон үе шатыг хэрэгтэй) хөрвүүлэгч гол үйл ажиллагааны бүрэлдэхүүн хэсэг нь:

  • оролтын хөтөлбөр (урсгалын тэмдэг) нь скан хийгчид (дүрмийн анализатор), тэмдэглэгээ нь урсгал руу хөрвүүлдэг руу хооллож байна.
  • Parser (parser) нэг хийсвэр синтакс модыг барих.
  • Семантик анализатор семантик мэдээлэл задардаг ба алдаа мод цэгүүдийг шалгаж байна. нэмэлт шинж чанар, байгуулсан холбоосууд нь хийсвэр синтакс мод - үр дүнд семантик график барьсан.
  • Завсрын код генератор урсгал график барьж (tuples гол блок бүлэглэсэн байгаа).
  • Машины бие даасан код нь оновчтой (үндсэн нэгж дотор) орон нутгийн болон дэлхий нийтийн (бүх барилгын тоосго нь) нь үндсэндээ хэв журмуудын дотор үлдсэн сайжруулж аль аль нь явуулж байна. илүү кодыг багасгаж, тооцоог олгодог. үр дүн нь өөрчилсөн урсгал график байдаг.
  • Генераторын (магадгүй үр ашиггүй) нь объект файл ассемблер виртуал бүртгэлийг бий болгох нь rectilinear дамжуулах хяналтын код руу зорилтот код нь үндсэн барилгын тоосго нь холбодог.
  • Машины хамааралтай оновчтой, Linker бүртгэл хооронд нь санах ойг хуваарилж, төлөвлөж баг болж байна. Энэ pipelining сайн ашиглах нь энэ чуулганы үеэр угсралт хэл хувиргах програм хийдэг.

Үүнээс гадна, алдаа илрүүлэх дэд менежер, бэлэг тэмдэг хүснэгт ашиглах.

Дүрмийн шинжилгээ (скан)

скан хийгчийн жетон, зайлуулах зайгаар, санал, өргөжүүлэх макро нь урсгал руу гол эх үүсвэр нь тэмдэгтүүд нь хөрвүүлдэг.

Скан хийгчид нь ихэвчлэн харгалзан хэрэг, ашгийн түвшингээ, шугам завсарлага болон суулгагдсан санал авах эсэхээс үл хамааран гэх мэт асуудал тулгардаг.

хайх явцад тохиолдож болох алдаа, дүрмийн дуудаж, Үүнд:

  • цагаан толгойн биш юм тэмдэгт;
  • нэг үгээр, эсвэл шугам тэмдэгт тоог тооцох;
  • биш, хаалттай тэмдэг, эсвэл нэг мөр шууд;
  • тайлбар нь файлын төгсгөл.

Анализын (ийм салгалт хийх)

parser хийсвэр синтакс модонд жетон дарааллыг хувиргадаг. модны зангилаа бүр нэртэй салбар бөгөөд олон мод цэгүүд өөрсдөө байдаг бүхий объект гэж хадгалагдсан байна. Энэ үе шатанд ямар нэгэн цикл байдаг. Та үүсгэх үед parser хэлний дүрэм (LL буюу LR) нарийн төвөгтэй түвшинд анхаарах, ямар ч дүрэм disambiguation байгаа эсэхийг олж мэдэх шаардлагатай юм. Зарим хэлнүүд семантик шинжилгээ шаардлагатай байна.

Энэ үе шатанд олсон алдаа синтакс гэж нэрлэдэг. Жишээ нь:

  • K = 5 * (7 - у;
  • J = / 5;
  • 56 = X * 4.

семантик анализ

Үеэр семантик анализ задлан ялгал хийх модны дүрэм, дэд хэсгүүдийн зөвшөөрөх шалгах (далд төрөл хувиргах үйл ажиллагааг оруулан лавлагаа нэр олгох, гэх мэт. Д.) семантик график байгуулах нь.

Мэдээж хэрэг, өөр өөр хэл дээр дүрмийг хүлээн багц. Та Java шиг хэлийг хөрвүүлэх бол хөрвүүлэгчид олж болно:

  • түүний хүрээнд олон хувьсагч мэдүүлэг;
  • түүний мэдэгдлийн өмнө хувьсагчийн ишлэл;
  • орсон бөгөөд мэдүүлээгүй нэрийг ишлэл;
  • патентын эрхийг зөрчсөн;
  • арга дуудлагад нэмэлт өгөгдлүүд нь хэт их, эсвэл хангалтгүй тоо;
  • төрөл тохирохгүй.

үе

Завсрын код үеийн tuples бүрдсэн урсгалын график, үндсэн блок бүлэглэж үйлдвэрлэж байна.

код үеийн жинхэнэ машин код үүсгэдэг. эхний алхам дээр RISC-машинуудад зориулсан уламжлалт хөрвүүлэгчдийг, та виртуал бүртгэл нь хязгааргүй тооны бүхий монтажчин бий. CISC-машинуудын хувьд магадгүй ийм байх болно.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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