Transcript HW200_1

Компьютер бүтэц ба
ассемблер хэл
 С.Байгалтөгс
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Оршил
Компьютерийн үндсэн бүтэц
 Машины үйлдлүүд
 Машины хэл
 Ассемблер хэл
 Хэл хөрвүүлэлт
 Эмуляци
 Объект модулиуд ба модулиуд
ачаалах
 Салангид ассемблер

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Компьютерийн үндсэн бүтэц
ШУТИC-КтМС 2009/Хавар [http://www.cdeq.mn/hw200]
Компьютерийн техникийн бүтэц
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Компьютерийн техникийн бүтэц
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Компьютерийн техникийн бүтэц
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Оршил
Ассемблер хэлийг процессорын үйлдэлд
тулгуурлаж програм бичихэд ашиглана.
Энэ нь MIPS32 процессор чипд зориулсан
ассемблер хэлний удирдамж юм. Энэ
удирдамж нь одоогийн техник хангамжаас
илүүтэй SPIM симуляторыг ашиглана.
 Компьютерийн архитектур нь
компьютерийн эд анги болон үндсэн
үйлдлүүдийн логик дүрслэл юм.Aссемблер
хэлэнд нэг илэрхийлэл нь процессорын нэг
үндсэн үйлдэлтэй тохирдог юм.
Процессорын архитектур нь програмын
илэрхийлэл бүрт харагдаж байдаг.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
a

Цэвэр ассемблер хэл ховор байдаг. High
түвшний хэл дээр бичигдсэн байх нь
элбэг. Ассемблер хэлийг ашиглахдаа
шинэчилэгдсэн хэлбэрийг нь голдуу
ашигладаг. Программистэд илүү ойр
болгохын тулд нэмэлт шинж чанаруудыг
оруулсан байдаг. Энэ
өргөтгөсөн ассемблер хэл нь хэд хэдэн
үндсэн машин үйлдэлд тохирох
илэрхийлүүдийг агуулдаг. MIPS
өргөтгөсөн ассемблер хэл нь мөн ийм
боловч процессорын чип нь харагдсан
хэвээр байна.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]

Өндөр түвшний программчлалын
хэлүүд болох C эсвэл Pascal нь
(ихэнхдээ) ажиллаж буй
процессороосоо хамааралгүй юм.
Java програмууд нь процессороос
огт хамааралгүй болсон байдаг.
Харин ассемблер хэл дээрх програм
процессорийн бутэц дээр
тулгуурлаж бичигдэнэ.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Процессорын ялгаатай бүтэц


Процессорын чип-н архитектур нь
үндсэн компонентууд ба үндсэн
үйлдлүүдийн set юм.
Процессорын бүл бүр өөрийн
архитектуртай байдаг. Ассемблер хэл
бол тодорхойн процессорын
архитектурын программчлалын
үзэгдэл юм. Процессорын төрөл бүр
өөрийн ассемблер хэлтэй байдаг.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Процессорын ялгаатай бүтэц

Ассемблер хэл сурах үед тодорхой
процессорын архитектурыг судалж
байна гэсэн үг юм. Ассемблер хэл
сурах нь таны компьютерийн
мэргэжлийн ойлголтыг дээшлүүлэх
юм. Жишээ нь MIPS процессор юм.
MIPS ассемблерын ойлолтууд нь их
олон талтай байдаг.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Процессорын ялгаатай бүтэц

Энд компьютерийн шинжлэх ухааны хэтийн
төлөвөөс ассемблер хэлний талаар авч үзэх
болно. Ассемблер хэлний түвшинд
компьютерийн системд юу болж байгааг
тайлбарлах болно. Дээр өгүүлсэн нь
копьютерийн архитектурын электрон үзэгдэл
ба харин дараа өгүүлэх нь компьютерийн
системийн үйлдлийн системийн үзэгдэл байх
юм. Эрдэмтэд компьютерууд нь олон түвшинд
хуваагддаг гэдгийг хүлээн зөвшөөрдөг.
Хичнээн түвшин нэг нь нэгэн дээрээс
байрладагыг ойлгодог ба эдгээр түвшин бүр
компьютерийн шинжлэх ухааны хөтөлбөрийн
нэг буюу түүнээс олон хичээлд тохирдогыг
хүлээн зөвшөөрдөг ажээ.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Computer structure
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Суурь бүтэц
MIPS нь орчин цагийн хамгийн сайн
загвартай архитектур юм. MIPS
чипүүд нь 1985 оноос эхлэн
загварчлагдсан юм. Эдгээр
загварууд нь компьютерийн
архитектуруудын хамгийн шилдэг
санаануудыг агуулсан байдаг.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Суурь бүтэц
Ассемблер хэлний програм нь компьютерийн
техник хангамж яг юу хийх ёстойг үйлдлийнх
нь үндсэн дээр тулгуурлаж, алхам алхамаар
тайлбарлаж өгнө. C, Java мэт дээд түвшний
програмчлалын хэлд копьютерийн
архитектурын талаарх мэдлэг
шаардагддаггүй. Эх програмууд нь ямар ч
бүлийн процессор дээр ажиллах чадвартай
байдаг.
 Эдгээр нь компьютерийн архитектурын
ассемблер түвшний фундаметалийн талаар
юм. Ассемблер хэлийг суран, тодорхой
процессорын нарийвчилсан мэдээллийг суран
үүнд зориулсан програм бичих шаардлагатай
юм.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Машины үндсэн цикл
Ихэнх процессорууд гурван үндсэн алхамыг төгсгөлгүй
давтдаг. Машины цикл бүр нь машин үйлдэл (комманд)
бүрийн ажиллагааны үр дүн юм. Орчин үеийн процессор
нь секундад хэдэн сая машины циклийг гүйцэтгэдэг.
 Машин үйлдэл процессор фундаменталь үйлдэлд
(хоёр 32-битийн тоог нэмэх гэх мэт) хамаарах битүүдийн
загвар юм. Машин циклийн нарийвчилсан мэдээлэл нь
процессорын бүлүүдээс ялгагддаг. Ихэнх процессор
чипүүдийн машин циклүүд дараах байдалтай харагдана:
 Үйлдлийг авчрах(fetch). Үйлдлийг санах ойгоос
авчирна. Программын тоолуур нь (PC) нэг хэсэг юм.
Энэ нь үйлдэл санах ойн аль хэсэгт байрлаж байгааг
заана. Програмын тоолуурыг нэмэгдүүлэх. Програм
тоолуур нь дараачийн үйлдлийг заадаг.Үйлдлийг
ажиллуулах. Тухайн үйлдлийг ажиллуулна.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Машины үндсэн цикл
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Машины үйлдлүүд
Үйлдлүүд нь дарааллаар гүйцэтгэгддэг.
Програмын тоолуур нь тухайн хором бүрт
санах ойгоор дамжин тоолуураа ихэсгэдэг .
Үйлдэл ажиллах бүрт дараагийн үйлдэл нь
ажиллахаар автоматаар сонгогддог.
 “Хоёр тоог нэмэх”, “Хоёр тоог харьцуулах ” гэх
мэт үйлдүүд нь нэг машин циклд хийгдэх
үйлдлүүд юм. Давталтын үйлдлүүд нь хэвийн
дарааллыг өөрчлөх машин үйлдлүүд юм.
 Машин үйлдэл (комманд) нь процессорын нэг
машин үйлдэл гүйцэтгэх битүүдийн загвар юм.
MIPS процессорын хоёр 32-битийн
регистерүүдийг нэмэх үйлдэл байна: (регистер
нь бит загваруудыг хадгалж байдаг
процессорын хэсэг юм).

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Машины үйлдлүүд


0000 0001 0010 1011 1000 0000 0010
0000 үйлдэл нь 32 бит урт. Бит бүр 0
эсвэл1. Битүүд нь дөрөв дөрвөөрөө
групп үүсгэн дүрслэгдэнэ. Групп
бүрийн хоорондах хоосон зай нь бит
загварын хэсэг биш юм.
Үйлдэл дэх зарим битүүд үйлдлүүдийг
дангаараа тодорхойлдог. (хоёр регистр
нэмэх), бусад регистрүүд нь нэмэх
ёстой регистрүүдийг тодорхойлно.
Зарим цөөн битүүд нь гарах үр дүнг
агуулна.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Ассемблер хэлний илэрхийлэл


Машин үйлдлийн гадна давхарга нь
процессорын чипийн архитектурын
хэсэг юм. Гадна давхаргыг мэдсэнээр
үйлдэл юу илэрхийлж буй ойлгоно.
Цэвэр ассемблер хэлний илэрхийлэл нь
нэг машин үйлдэлтэй тохирно.
Ассемблер хэл нь машины хэлийг
бичихээс нэн хялбар юм.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Ассемблер хэлний илэрхийлэл
Энд өмнөх машин үйлдлийг ассемблер
хэл дээр дүрсэлж үзүүлэв:
Машины үйлдэл
ассемблер хэлний илэрхийлэл
0000 0001 0010 1011 1000 0000 0010 0000
add $t0,$t1,$t2
Энэ үйлдэл нь: $t1 болон $t2 регистр дэх
тоонуудыг нэмж үр дүнг нь $t0 регистрд
хийх юм. Ассемблер хэлний
илэрхийллээс машин үйлдлийг үүсгэхэд
хөрвүүлэлтийн Assembler програмыг
ашигладаг.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Ассемблер хэлний илэрхийлэл





Олон шалтгааны улмаас хүмүүс машин
хэлнээс илүү ассемблер хэлийг ашигладаг.
Хүмүүст эдгээр 0 болон 1 үүдийг
боловсруулахад хүндрэлтэй байдаг
Тэмдэглэгээ ашиглах нь программистуудад
тооцоолол дүрслэх уян хатан байдал бий
болгодог.
Ассемблер хэл нь авсаархан бичлэгтэй.
Сайжруулсан ассемблер хэл нь нэмэлт шинж
чанаруудыг агуулдаг. Энэ нь хэд хэдэн машин
үйлдлүүдэд тохирох коммандуудтай
(pseudoinstructions).
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Програм хөрвүүлэлт

Ассемблер хэлний илэрхийлэл нь машин хэлний
үйлдэлтэй ижил утгыг агуулна.Гэвч ажиллахаасаа өмнө
бит загварууд руу хөрвүүлэгдэх ёстой болдог. Ассемблер
хэлний програм нь ассемблер хэлний илэрхийлэл, өгөгдөл
тодорхойлох илэрхийлэл болон хөрвүүлэхэд шаардлагатай
зарим нэмэлт мэдээллүүдийг агуулна. Ассемблер хэлний
бит загварууд руу хөрвүүлэх жишээ байна.
Машины үйлдлүүд
ассемблер илэрхийлэл
 0011 0100 0000 0001 0000 0000 0000 1001
ori $1, $0, 9
 0000 0000 0100 0001 0000 0000 0001 1000
mult $2, $1
 0000 0000 0000 0000 0100 0000 0001 0010
mflo $8
 0011 0100 0000 0001 0000 0000 0000 1001
ori $1, $0, 5
0000 0000 0100 0000 0000 0000 0100 1000
div $8, $1
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Програм хөрвүүлэлт
Хэдэн жилийн өмнө FORTRAN хэл дээр бичигдсэн
програмыг ажиллуулахад үүнийг ассемблер хэл рүү
хөрвүүлэх компайлер ашиглаж байв. Ассемблер програм
ашиглан ассемблер хэлийг маши хэлрүү хөрвүүлнэ.
Эцэст нь машин хэлийг компьютерийн санах ойд
ачаалах програмаа ажиллуулна.
 Орчин үеийн компайлерууд ихэвчлэн эх програмыг
объект модуль гэж нэрлэгдэх файлд агуулагдаж буй
машин хэл рүү хөрвүүлдэг. Одоохондоо FORTRAN-г
ассемблер хэл рүү хөрвүүлэх талаар бодоцгооё.
 FORTRAN нь дээд түвшний хэл юм. Архитектураас үл
хамааран бүх төрлийн компютер дээр ажиллах
зориулалттай. FORTRAN илэрхийлэл бичихэд
компьютерийн архитектур мэдэх шаардлага байдаггүй
ба ямар ч компьютер дээр ажиллах чадвартай.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]

Машин хэлнээс бусад бүх
программчлалын хэлүүд
ажиллахаасаа өмнө машин хэлрүү
хөрвүүлэгдэх ёстой. Дээд түвшний
хэл нь архитектураас тусгаарлагдсан
байдаг. Энэ нь тусгай хөрвүүлэгч
(compiler) шаарддаг. Илүү орчин
үеийн хэлүүд нь машин хэлнээс бүр
илүү холдсон байдаг. FORTRAN нь 50
жилийн настай хуучин хэл ба орчин
үеийн хэлүүдийг бодвол машин хэл
рүү илүү ойрхон юм.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
FORTRAN-н жишээ илэрхийлэл:
result = 6*alpha+beta
MIPS ассемблер хэл рүү хөрвүүлсэн хэсэг:
lw $t0,alpha
# copy alpha to register $t0
lw $t1,beta
# copy beta to register $t1
mul $t2,$t0,6
# multiply $t0 times 6; result
in $t2
add $t2,$t2,$t1
# add $t2 and $t1; result in
$t2
sw $t2,result
# copy answer to result
Digital Equipment Corporation VAX ассемблер хэл
рүү хөрвүүлсэн хэсэг:
 MULL3 #6,ALPHA,R5 ADDL3 R5,BETA,RESULT

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Машины хэл


“Аssembly language.“ гэж нэрлэгдэх ганц хэл
байдаггүй ба процессор бүл бүр (Intel, VAX,
MIPS, Alpha, ...) өөрийн машин үйлдлүүдтэй
бөгөөд үүнд тохирсон ассемблер хэлтэй
байдаг. MIPS ассемблер хэл нь зөвхөн MIPS
процессорт зориулагдсан. The VAX
ассемблер хэл нь зөвхөн VAX процессорт
гэх мэт. IBM компьютерууд болон Intel
суурьтай компьютеруудийн ассембер
хэлнүүд ялгаатай.
Бүх процессорууд нэг ижил машин циклийг
дагана. Процессорууд нь аль үйлдэл нь
машин циклын "execute" фазад
гүйцэтгэгдэхээрээ ялгагдана.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Ассемблер хэл нь тодорхой процессорын техник
хангамж дээр үндэслэгдэн тооцооллыг илэрхийлнэ.
Дээд түвшний программчлалын хэл нь асуудлыг
шийдвэрлэх дээр үндэслэн тооцооллыг
тайлбарлана. Олон төрлийн асуудал байдаг тул
олон дээд түвшний хэл байх ба хэл бүр тухайн төрөл
асуудалд зориулж загварчлагдсан байдаг. Жишээ нь,
объект хандалтат хэл, тухайн асуудлын объектууд
дээр үндэслэн үйлдлүүдтэй нь цуг тооцооллыг
хийдэг.
 Ассемблер хэл дээр програм бичихээс илүүтэй дээд
түвшний хэл дээр бичих нь илүү хялбар. Төгс
програмчлалын хэл гэж байхгүйгээс хойш бүх
асуудалд тохирсон хэл гэж байхгүй юм.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]

Процессорын архитектур нь
харагдахуйц үед ассемблер хэл нь
үйлдлийн систем, компайлер,
холбоос, бага түвшний график
болон бусад програмуудад зориулж
ашиглагддаг. Ихэнх програмуудын
чухал хэсэг нь ассемблер хэлдээр
бусад хэсэг нь дээд түвшний хэл
дээр бичигдсэн (ихэвчлэн С) байдаг.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]

Ассемблер хэл хамгийн ихээр өргөн
ашиглагдсан програм нь embedded
system юм. Энд процессорын чип нь
тусгай зориулалтын машины нэг хэсэг юм.
Жишээ нь агаарын тээврийн электроник,
хиймэл дагуулын холбоо, DVD тоглуулагч,
роботууд, автомашины электроник, гар
утас болон консол тоглоомууд. MIPS
чипүүд нь голдуу эдгээрт
ашиглагдана.(ийм шалтгаанаар бусад
процессоруудаас ялгаатай нь MIPS
чипүүдийг жил бүр үйлдвэрлэгэд).
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Үндсэн cанах байгууламж

Одоо компьютерийн системийн санах ойн
талаар ярилцья. Найман бит нэг байтыг
бүрдүүлнэ. Нэг бит нь дан ганц on/off утга
юм. Дээр үеийн компьютеруудад санах ой
дах битийн утгуутыг тохируулах хэд хэдэн
мөр тээглүүрэн унтраагууртай байв. Эдгээр
компьютерийг програмчлахын тулд эхний
унтраагуур хавтанаас эхлээд машин
үйлдэл бүрийн бит утгыг оруулах хэрэгтэй
болно. Унтраагуур бүрийн дээр байрлах
гэрэл нь on эсвэл off (1 or 0) байгааг
илэрхийлнэ. Орчин үеийн компьютеруудад
санах ой руу бит загваруудыг шилжүүлэх
илүү тохиромжтой арга хэрэглэдэг болжээ.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Програмын машин үйлдлүүдийг бүрдүүлдэг
байтуудыг санах ойд хадгалах ба хэрэгтэй
үед нь процессор руу авдаг байна. Өгөгдөл
мөн санах ойд хадгалагдана. Өгөгдөл болон
үйлдлүүдийг хоёуланг нь санах ой дах
хадгалах арга нь ихэнх орчин үеийн
компьютеруудын үндсэн загвар болох Von
Neumann-н машины онцлогуудын нэг юм.
 Ихэнх компьютеруудын адил MIPS-н санах
ойн байт бүр хаягтай байна. Хаяг нь байтыг
тодорхойлж байдаг бүхэл тоо юм. Хаягууд нь
0-тэгээс 4 тэрбум хүртэл байдаг. Гэхдээ MIPS
дээр хэрэглэгчийн програм (таны бичиж буй
шиг) болон өгөгдлүүд нь 2 тэрбум хүртэл
хаягаар хязгаарлагдсан байдаг.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Үндсэн Санах байгууламж
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Architecture
Компьютерийн архитектур нь
компьютерийн эд ангиуд болон
үндсэн үйлдлүүдийн логик дүрслэл
юм.
 MIPS бүлийн компьютерууд нь бүгд
ижил ассемблерийн түвшний
архитектуртай . Энэ нь бүх MIPS
машинууд нь ижил ассемблер
хэлийг ашиглан програмчилж болно
гэсэн үг юм.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Architecture
Одоогийн архитектурыг гүйцэтгэж буй
электроникууд нь чипний хувилбараас
хамаарч ихээхэн ялгаатай байж болох юм.
Энэ нь автомашины архитектуртай ижил юм.
Хоёр Ягуар жолоочид адилхан харагдавч
(ижил стиль, ижил удирдлага, ижил үйлдэл)
бүрхүүл дорх эд ангиуд нь ялгаатай байна.
Архитектур ижил боловч гүйцэтгэл нь
ялгаатай.
 MIPS-н архитектур нь Pentium-н
архитектураас ялгаатай. Хоёулаа Von
Neumann машинууд, ерөнхийдөө адил
харагдавч, нарийвчилсан үйлдлүүд нь тэс өөр
юм. Эдгээр нь ялгаатай машин хэлтэй ийм
учраас ассемблер хэл нь ялгаатай.

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Эмуляци

Процессорын архитектур нь эд анги болон
үндсэн үйлдлүүдийн логик дүрслэл байдаг.
Энэ нь архитектур хэрхэн ажилладаг талаар
мэдээлэл өгдөггүй. Үйлдлүүд нь
электорникийн түвшинд хэрэгждэг юм. Эдгээр
нь програм хангамжтай цуг хэрэгждэг.
Процессорын архитектурын хэрэгжилтийг
гүйцэтгэдэг програм нь силикон дээр хийгдэж
үйлдэлтэй логикийн хувьд ижил юм. Ийм
програмыг эмулятор (emulator) гэж нэрлэнэ.
Ямар ч төрлийн компьютер дээр эмулятор
ажилладаг. Мэдээж хэн нэгнь эмулятор
програм бичих ба энэ нь хүнд ажил байдаг.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Эмуляци

Эмулятор програмын урсгалын процесс нь
эмуляци хийгдсэн процессорын маши цикл
байна. Харин одоо бол эдгээр алхамууд нь
силикон дээр биш програм хангамж дээр
хэрэгжинэ. Эмуляци хийгдсэн машин цикл
хэдэн мянган програмын илэрхийлэлтэй
холбогддог. Эмулятор ажиллаж байхад
симуляцлагдсан машин цикл бүр процессор
дээрх хэд хэдэн үйлдлүүд ажиллагаатай
байхыг шаарддаг. Иймээс эмулятор нь
эмуляци хийгдсэн процессороос илүү удаан
ажиллагаатай байна.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Эмуляци

Энэ хичээл MIPS архитектурд
зориулсан эмулятор ашиглана.
Эмулятор ашигласнаар хамгийн том
давуу тал нь энд дүрслэгдэж буй
архитектур нь эмулятороор хэрэгжиж
архитектуртай яг тохирох юм.
Эмулятор нь ихэнх десктоп
компьютерууд дээр ажилладаг; PC,
Mac, эсвэл бүр ... MIPS.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Салангид хөрвүүлэлт
Процессор дээр ажиллаж буй эмулятор нь
дебаг хийхэд байнга ашиглагдана.
Эмулятортай ажиллах нь бодит техникийн
хатуу силикон дээр ажиллахаас илүү
тохиромжтой юм.
 Олон жилийн туршид ассемблер хэл нь
чухал enterprise-wide програмчлалд нэг
шалтгаанаар ашиглагдаж байсан: салангид
эх файлууд дангаараа ассембл хийгдэж
болох ба дараа нь нийлүүлэн (холбон)
бүтэн ажиллагаа бүхий файл болгоно. Эх
файл бүр объект файл руу ассембл
хийгддэг байв. Үүнийг салангид ассембл
гэж нэрлэнэ (эсвэл салангид хөрвүүлэлт).

ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Салангид хөрвүүлэлт

Объект модуль нь хараахан
ажиллахад бэлэн болоогүй машин
хэлний програмыг агуулсан файл юм.
Хэд хэдэн шалтгаанаар ажиллахад
бэлэн болоогүй байдаг: эх код нь
бүрэн хөрвүүлэгдээгүй (илүү мэдээлэл
хэрэгтэй үед), кодны санах ойн
байрлал ба өгөгдөл нь тогтоогдоогүй,
мөн програмыг бүрэн болгоход илүү
код хэрэгтэй. Ассемблер нь эх файл
бүрд объект модуль үүсгэдэг.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Салангид хөрвүүлэлт
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Модулиуд ачаалах

Ассемблер хэлэнд том програмын
хэсгүүд нь салангид эх файлууд
болж салангид объект модулиуд руу
бичигддэг. Салангид объект
модулиуд нь линкер(холбогч)-р
холбогдож ачаалах модуль буюу
ажиллах файл болдог.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Модулиуд ачаалах
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Модулиуд ачаалах

Бүх боломжит хэмжээ бүхий орчин
үеийн програмууд ингэж бичигдсэн
байдаг. Объект модулиуд нь
ассемблер хэлний эхээс үүссэн байх
шаардлагагүй юм. Дээд түвшний
хэлний (С хэл гэх мэт) компайлер нь
ассемблертэй төстэй объект модуль
үүсгэдэг. Зураг дээр А объект модуль
ассемблер програмаас үүссэн В
модуль нь FORTRAN програмаас,
харин С модуль нь COBOL програмаас
үүссэн байж болзошгүй.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]
Модулиуд ачаалах

Олон жилийн турш салангид
хөрвүүлэлтийг дэмждэг ганц хэл нь
Ассемблер, FORTRAN, COBOL байсаар
ирсэн. Мөн үйлдвэрлэлд ашиглаж ирсэн
хэлүүд нь Ассемблер, FORTRAN баCOBOL
байсаар ирсэн. BASIC нь салангид
хөрвүүлэлтийг дэмждэггүй байв; BASIC нь
том хэмжээний хэрэглээний бичихэд
ашиглагддаггүй байв. Pascal мөн BASICтэй адил байв. C нь салангид
хөрвүүлэлтийг дэмждэг ба хэрэглээний
програмуудыг бичихэд дийлэнх хувийг
эзлэж байна.
ШУТИC-КтМС 2009/Хавар
[http://www.cdeq.mn/hw200]