Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа

Агуулгын хүснэгт:

Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа
Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа

Видео: Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа

Видео: Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа
Видео: Лек-25: Кодын оновчлол гэж юу вэ | Машинаас хамааралгүй техник, машинаас хамааралгүй техник 2024, Арваннэгдүгээр
Anonim

Үндсэн ялгаа – Машинаас хамааралтай ба Машинаас хамааралгүй кодын оновчлол

Компьютерийн программууд нь даалгаврыг гүйцэтгэхийн тулд техник хангамжид өгсөн заавруудын багц юм. Эдгээр программууд нь ихэвчлэн дээд түвшний хэл дээр бичигдсэн байдаг бөгөөд компьютер тэр хэлийг ойлгодоггүй. Тиймээс хөрвүүлэгчийг тэдгээр зааврыг машины код эсвэл зорилтот код болгон хөрвүүлэхэд ашигладаг. Зорилтот кодыг бүтээхийн тулд хэд хэдэн үе шат дамждаг. Кодын оновчлол нь тэдгээрийн нэг юм. Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлол гэх мэт хоёр оновчлолын арга байдаг. Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын гол ялгаа нь машинаас хамаарсан оновчлолыг объектын кодонд ашигладаг бол машинаас хамааралгүй кодын оновчлолыг завсрын кодонд ашигладагт оршино.

Машинаас хамааралтай кодын оновчлол гэж юу вэ?

Эх кодыг объект код эсвэл зорилтот код болгон хөрвүүлэхдээ хөрвүүлэгч хэд хэдэн үе шат дамждаг. Нэгдүгээрт, эх кодыг токен үүсгэдэг лексик анализаторт өгдөг. Дараа нь гаралтыг үүсгэсэн токенууд логик дарааллаар байгаа эсэхийг судалдаг синтакс анализаторт өгнө. Энэ гаралтыг семантик анализаторт өгнө. p=q + r; гэсэн код байна гэж бодъё.

Энд p, q нь бүхэл тоо, харин r нь хөвөгч юм. Семантик анализаторыг ашиглан c бүхэл тоон хувьсагчийг хөвөгч рүү хөрвүүлдэг. Тиймээс энэ нь семантик шинжилгээ хийдэг. Семантик анализаторын гаралт нь Завсрын код үүсгэгч рүү очдог. Энэ нь завсрын кодыг буцаадаг бөгөөд дараа нь код оновчтойлогч руу очдог. Кодын оновчлол нь бодит эх кодын утгыг өөрчлөхгүйгээр чухал бус програмын мэдэгдлүүдийг арилгах үйл явц юм. Энэ нь заавал оновчлох зүйл биш боловч зорилтот кодын ажиллах хугацааг сайжруулж чадна. Код оновчтойлогчийн гаралтыг код үүсгэгчид өгч, эцэст нь зорилтот кодыг бүтээдэг.

Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа
Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа
Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа
Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа

Зураг 01: Эмхэтгэгчийн үе шатууд

Машинаас хамааралтай кодын оновчлолд оновчлолыг эх кодод ашигладаг. Хангалттай хэмжээний нөөцийг хуваарилснаар энэ оновчлолд хөтөлбөрийн гүйцэтгэл сайжирна.

Машинаас бие даасан кодын оновчлол гэж юу вэ?

Завсрын код дээр оновчлол хийх үед үүнийг машинаас хамааралгүй кодын оновчлол гэж нэрлэдэг. Машинаас бие даасан кодын оновчлолд хүрэх өөр өөр арга техникүүд байдаг. Тэдгээрийг дараах жишээн дээр тайлбарлав.

Доорх кодын мөрүүдийг уншина уу.

(j=0; j<10; j ++) {

b=x+2;

a[j]=5 j;

}

Дээрх кодын дагуу давталт болгонд b=x+2-г дахин дахин тооцдог. b-г тооцоолсны дараа энэ нь өөрчлөгдөхгүй. Тиймээс энэ мөрийг давталтын гадна дараах байдлаар байрлуулж болно.

b=x+2;

(j=0; j< 10; j++)

{a[j]=5j;

}

Үүнийг кодын хөдөлгөөн гэж нэрлэдэг.

Доорх кодын мөрүүдийг уншина уу.

j=5;

хэрэв (j==10) {

a=b+20;

}

Дээрх кодын дагуу j утга нь хэзээ ч 10-тай тэнцэхгүй тул ‘if block’ хэзээ ч ажиллахгүй. Энэ нь аль хэдийн 5-р утга руу тохируулагдсан байна. Тиймээс үүнийг if блок устгаж болно. Энэ техник нь үхсэн кодыг арилгах явдал юм.

Өөр нэг арга бол хүч чадлыг бууруулах явдал юм. Үржүүлэх гэх мэт арифметик үйлдлүүд нь илүү их санах ой, цаг, CPU-ийн мөчлөг шаарддаг. Эдгээр үнэтэй хэллэгийг b=a2 гэх мэт хямд илэрхийллээр сольж болно; эсвэл нэмэлтээр сольж болно, b=a + a;

Доорх кодыг үзнэ үү.

(j=1; j <=5; j ++) {

утга=j5;

}

Үржүүлэхийн оронд кодыг дараах байдлаар өөрчилж болно.

int температур=5;

(j=1; j<=5; j++) {

temp=temp + 5;

утга=temp;

}

Ажиллах үед тогтмол байдаг илэрхийллүүдийг үнэлэх боломжтой. Үүнийг байнгын нугалах гэж нэрлэдэг. b[j+1]=c [j+1]; гэж хэлж болно.

Үүний оронд үүнийг дараах байдлаар өөрчилж болно.

n=j +1;

b[n]=c[n];

Дараах байдлаар гогцоо байж болно.

(j=0; j<5; j++) {

printf(“a\n”);

}

(j=0; j <5; j++) {

printf(“b\n”);

}

a болон b-г хэвлэх нь хоёулаа ижил тооны давталттай. Дараах байдлаар хоёуланг нь нэг for циклд нэгтгэж болно.

(j=0; j <5; j++) {

printf(“a \n”);

printf(“b\n”);

}

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

a=bc + k;

d=b c + m;

Энэ кодыг дараах байдлаар хөрвүүлж болно.

temp=bc;

a=temp + k;

d=температур + м;

Бc-г дахин дахин тооцоолох шаардлагагүй. Үржүүлсэн утгыг хувьсагчид хадгалж, дахин ашиглах боломжтой.

Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хооронд ямар төстэй зүйл байдаг вэ?

Эдгээр нь хоёулаа кодын оновчлолд хамаарна

Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хооронд ямар ялгаа байдаг вэ?

Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлол

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

Хураангуй – Машинаас хамааралтай ба Машинаас хамааралгүй кодын оновчлол

Код оновчлол нь машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлол гэсэн хоёр оновчлолын техникээс бүрдэнэ. Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа нь машинаас хамааралтай оновчлолыг объектын кодонд ашигладаг бол машинаас хамааралгүй кодын оновчлолыг завсрын кодонд ашигладаг.

Машинаас хамааралтай ба Машинаас хамааралгүй кодын оновчлолын PDF хувилбарыг татаж авах

Та энэ нийтлэлийн PDF хувилбарыг татаж аваад офлайн зорилгоор ашиглах боломжтой. PDF хувилбарыг эндээс татаж авна уу. Машинаас хамааралтай ба машинаас хамааралгүй кодын оновчлолын хоорондох ялгаа

Зөвлөмж болгож буй: