Download presentation
Presentation is loading. Please wait.
1
Компьютерийн зохион байгуулалт, ассемблер хэл
Монгол Улсын Шинжлэх Ухаан Технологийн Их Сургууль Компьютерийн зохион байгуулалт, ассемблер хэл Код : CS200 Улирал : Хавар 2009 Багш : С. Байгалтөгс /проф, доктор/
2
SPIM програм Энэ сэдвийн хүрээнд SPIM програмыг хэрхэн яаж ашиглах талаар зөвлөгөө өгөх болно. MIPS програмыг жишээнд үзүүлсэн шиг ажлуулна. Агуулга : SPIM програмыг эхлүүлэх SPIM програмын хэрэглэгчийн интерфейс Ассемблер хэлдээр програмаа бичих Програмыг ачаалах Програмаа ажлуулах MUST
3
SPIM програмыг эхлүүлэх
MIPS процессор нь 32 битийн, 32 ширхэг ерөнхий зориулалтын регистртэй. Эдгээр нь дотроо тодорхой регистрүүдэд хуваагддаг. Эхний жишээ болох SPIM програм нь бүхэл тоог (integer) дүрслэхдээ 2 регистрт битүүдийн төлвөөр дүрсэх ба дараа нь тэр 2 – ыгоо нэмэх болно. Энэ жишээ нь MS Win ME болон бүх windows үйлдлийн системд ажиллах ба харин UNIX болон LINUX – д хаагдан ажиллахгүй болно. SPIM програмыг Start товчиндээр даран зурагт үзүүлсэн шиг ажлуулна. MUST
4
SPIM програмын цонх Програмыг ажлуулахад доор үзүүлсэн шиг цонх нээгдэх ба дотроо 4 – н хэсэгт хуваагдана. MUST
5
SPIM програмын цонх Register Display : Энэ хэсэгт бүх 32 ерөнхий зориулалтын регистр (16 – таар бичигдсэн), хөвөгч цэгтэй регистрүүд байрлана. Text Display : Энд ассемблер хэл дээрх програмын эх код байрлах ба машины хэл дээр (16 - таар) хөрвүүлэгдсэн командууд болон санах байрлалын хаягууд зэрэг харагдана. Data and Stack Display : Энд програмын өгөгдөл болон стекрүү хийсэн өгөгдөл зэрэг MIPS – ын санах ойн хэсгийг үзүүлдэг. SPIM Messages : Энд симуляторын мэдээллийг харуулах ба ихэнхдээ алдааны мэдээллийг харуулдаг. Симуляци хийгдсэн програмын үрдүн SPIM – ын консолд гарч ирэх болно. MUST
6
Ассемблер хэл дээр програм бичих
Ассемблер хэлдээр бичигдсэн програм ажиллаж байх явцад консолд симуляцийн мэдээлэл бичигдэж байдаг. Үүнтэй ижлээр MIPS компьютер дээр энэ програмыг ажлуулахад консол дээрх үрдүнтэй ижил үрдүн дэлгэцэнд харагдах болно. Симулятороос өгч буй мэдээлэл нь хэрэглэгчид хандсан байх ба эдгээр нь алдааны мэдээлэл, сануулга зэрэг байна. Мөн симуляцийг эхлүүлэхийн тулд ассемблер хэлдээр бичсэн програмаа ачаалах шаардлагатай. Симуляторын тохиргоонуудаас хамаарч тодорхой машин командууд нь санах ойд байрласан байдаг. Эдгээр командууд нь тухайн програм ажиллахад оролцдог. Симуляторын цэснээс симуляцийг эхлүүлэх үед бичсэн кодын дагуу програм ажлах ба хязгааргүй давталттайгаар ажиллана. Зогсоохдоо симуляторын Break дээр дарах болно. MUST
7
Ассемблер хэл дээр програм бичих
Эх файл (source file – ассемблер хэлдээрх болон бусад програмчлалын хэлдээр бичигдсэн) нь програмистүүдээр хөгжүүлэгдсэн, програмчлалын хэлдээр бичигдсэн кодыг агуулсан текст файл юм. Програм бичих эдитор нь жишээлбэл Notepad байж болно. MUST
8
2 + 3 програм Процессор нь эх файлыг шууд ажлуулж чадахгүй харин 2тын тоололд хөрвүүлэгдсэн кодыг ажлуулдаг. Эдитор дээр бичсэн програмаа addup.asm гэж хадгалан дуудаж ачаална. ## програмын эхлэл .text .globl main main : ori $8, $0, 0x2 # 8 регистрт 2 – ыг хийж байна ori $9, $0, 0x3 # 9 регистрт 3 – ыг хийж байна addu $10, $8, $9 # 8 болон 9 регистрдэх утгыг нэмж байна. үрдүн нь 10 регистрт хадгалагдана. ## төгсгөл MUST
9
2 + 3 програм # тэмдэг нь бичлэгийн эхэнд байрлах ба энэ нь тайлбарыг эхлүүлэх болно. # тэмдгээр эхэлсэн мөр болгоныг симулятор тайлбар гэж үзээд хэрэгсэхгүй орхих болно. Харин main – ыг зааж буй 3 мөр нь машин командыг эхлүүлж байна. MUST
10
SPIM – ын тохиргоог хийх
MIPS процессорын команд бүр 32 бит (4 байт) – ийн урттай байдаг. Өмнөх програмд main бичлэгийн дараах 3 мөр нь 3 – н машин командыг дуудаж байгаа. Харин үлдсэн мөрөнд ассемблерийн мэдээлэл, тайлбарыг багтааж байгаа. Энэ эхний жишээ програмыг ажлуулахад SPIM – д хэдэн сонголтыг хийх хэрэгтэй. Menu bar – аас Simulator – ыг сонгож Settings дээр даран харилцах цонхыг нээх хэрэгтэй. Доор үзүүлсэн сонголтыг хийнэ. MUST
11
Эх файлыг ачаалах Орчин үеийн компьютерүүдийн бүүт (boot) нь хэрэглэгчдэд ойлгомжтой болсон. Энэ нь тодорхой хаягийн орон зайд байрлах firmware програм (үйлдвэрлэгчдийн зохиосон EEPROM – д шарагдсан өөрчлөгдөхгүй тогтмол машин кодууд) юм. Энэ нь тэжээл залган, үйлдлийн систем ачаалж эхлэснээр ажиллаж эхэлдэг. SPIM нь үндсэн firmware – ыг симуляци хийж болдог. File цэсээс Open командыг сонгож файлаа сонгон SPIM симуляторт програмаа ачаалдаг. Хэрвээ алдаатай бичигдсэн програм бол SPIM нь алдааны мэдээллийг үзүүлдэг. MUST
12
Эх файлыг ачаалах Эх файлаа SPIM – д ачаалах явцад 2 зүйл хийгддэг.
Ассемблер хэлдээрх файл нь машиний командруу хөрвүүлэгддэг. Командууд нь SPIM – ын санах ойд ачаалагддаг. доор зурагт үзүүлвэл : MUST
13
PC (Program counter) тохиргоо
Program counter нь процессорт ажиллаж буй командын 4 байтын хэмжээтэй хаягийг агуулж байдаг. Register Display хэсгээс Program counter – ыг 0 – ээс эхлэдгийг харж болно. Үүнийг нь 0x – ээр солих хэрэгтэй ба энэ нь эхний командын хаяг юм. Ингэхдээ Simulator цэсний Set Value командыг сонгох хэрэгтэй. Харилцах цонх гарч ирэхэд PC болон 0x гэж оруулаад OK даран өөрчлөнө. MUST
14
Програмыг ажлуулах F10 товчийг дарж командаа алхам алхамаар ажлуулна. Эхний команд биелэгдэхэд 8 регистрт 2 гэсэн утга орсон байх болно. Дараагийн команд биелэгдэхэд PC нь 0x гэсэн утгатай болно. MUST
15
Програмын үрдүн F10 товчийг програм дууссаны дараа дахин дарвал PC нь санах ойн өөр хаягийг авах ба бодит процессор байсан бол гацалт үүсэх болно. MUST
16
Програмын тайлбар Бодит процессор дээр үйлдлийн системийн удирдлагын дор програмын биелэх явц ялгаатай байдаг. Харин энэ тохиолдолд үйлдлийн системгүй командаа нэг нэгээр нь ажлуулж байгаа. .text – програмд шаардлагатай ассемблер хэлний директив. .globl main – энэ нь эх файлын main функцыг тодорхойлж байна гэж ойлгож болно. main : санах ойдох эх кодын байрлалыг тодорхойлдог. Энэ жишээ програмд main нь эхний командын хаягийг илэрхийлж байна. MUST
17
MIPS процессорын програмчлалын загвар
Санах ой Регистрүүд Машин цикл Удирдлагын урсгал MUST
18
Санах ой Орчин үеийн компьютерийн системд кеш ой болон хийсвэр ой үргэлж хэрэглэгдэх болсон. Харин санах ойн хийсвэр ойлголтонд эдгээр нь хамаарахгүй. Хийсвэр ойн үндсэн зорилго нь нийт боломжит хаяглалын орон зайг ашиглах явдал юм. Кеш ойн зорилго нь үндсэн санах ойд хурдтай хандах явдал юм. Тиймээс програмчлалын загварт кеш ой хамаарахгүй бөгөөд санах ойг тайлбарлавал: Өгөгдөл : MIPS процессор нь 232 байт хэмжээтэй массив хэлбэрийн байх ба байт тус бүрийн хаяглалын орон зай нь 32 бит юм. Байт бүр 8 битийн төлвийг авах ба боломжит 256 утгын нэг байна. MIPS процессорын үндсэн санах ойн хаяглалын орон зай нь 0x – ээс 0xFFFFFFFF хүртэл юм. MUST
19
Санах ой Хэрэглэгчийн ашиглаж буй програмууд болон өгөгдөл нь 231 байтаар хязгаарлагддаг бол үлдсэн хаягийн орон зайг үйлдлийн систем хэрэглэх болон тусгай зориулалтаар ашигладаг. Үйлдлүүд : Микропроцессор нь дотроо битийн төлвийг хадгалах электрон компонент буюу регистрүүдийг агуулдаг. Мөн санах ой болон регистрүүдийн хооронд мэдээлэл дамжуулах зэрэг санах ойтой хамтарч ажилладаг. MUST
20
Санах ой Ачаалах : санах ойн тодорхойлогдсон нэг хаягнаас өгөгдөл процессорын регистрт хуулагдахыг хэлнэ Хадгалах : процессорын регистрээс санах ойн тодорхой нэг хаягруу өгөгдөл хуулагдахыг хэлнэ Санах ой болон процессорын хооронд 1,2,4 эсвэл 8 байтын өгөгдөл хуулагддаг. Эдгээр нь үйлдлийг заах болон хаягийг тодорхойлсон байтууд байдаг. MUST
21
Санах ойн байршилт Ачаалах болон хадгалах үйлдлүүд нь өгөгдлийг анхны байрлалаас заасан байрлалд хуулдаг. Энэ санах ойн эсвэл регистрийн анхны байрлал нь өөрчлөгддөггүй. Харин мэдээж заасан байрлалаас анхны байрлалруугаа өгөгдөл буцаж хуулагдаж болдог. Санах ой нь команд болон өгөгдлийг тодорхойлсон битүүдийн төлвийг хадгалах бөгөөд тухайн техник хангамжаас хамаарч санах ойн хаана ч хадгалагдаж болдог. Команд болон өгөгдөл тусдаа байрласнаар санах ойг зохион байгуулах системийн програм болон програмчлахад тохиромжтой. MUST
22
Санах ойн байршилт Санах ойн хаягийн орон зай нь 32 бит бөгөөд 0x хаягаас 0xFFFFFFFF хүртэлх орон зай нь хэрэглэгчийн програмд ашиглагддаггүй. Энэ нь үйлдлийн систем болон ROM – д хэрэглэгддэг. Энэ хаягийн орон зайд байрлах ROM – д удирдлагын програм байршдаг. Text Segment : энд хэрэглэгчийн програмын машин хэл байршдаг. MUST
23
Санах ойн байршилт Data Segment : энд програмын үйлдэлд хэрэглэгдэх өгөгдөл байршина. Энэ өгөгдөл нь статик буюу програмын гүйцэтгэлээр байршсан хэмжээ нь өөрчлөгддөггүй өгөгдөл юм. Өөрөөр хэлбэл програмын биелэлтийн турш байт хэмжээ нь өөрчлөгдөхгүй. Динамик өгөгдөл нь үүний эсрэг байх болно. Stack Segment : стек нь хэрэглэгчийн хаягийн орон зай гэж хэлж болно. Дээд түвшний програмчлалын хэлэнд локаль хувьсагч болон параметрүүдийг процедур шиг стек рүү хийж мөн стекээс авч ашигладаг. MUST
24
Регистрүүд Өгөгдөл нь байтуудаас бүтдэг. Компьютер үйлдвэрлэгчид бүр 1 байтаас их хэмжээтэй багцлаж ашиглах өөрсдийн дүрмийг тогтоож өгдөг. MIPS чипийн хувьд : Byte – 8 бит Word – 4 байт буюу 32 бит Double word – 8 байт буюу 64 бит Санах ойн нэг хэсэг нь хаягийн эхний байтад хамаатай. Ихэнх MIPS командууд нь тогтмол тооны байтуудыг агуулдаг. Регистр гэдэг нь битийн төлвийг агуулах процессорын нэг бүрэлдэхүүн хэсэг юм. MIPS процессорын хувьд нэг регистр нь 32 битээс бүрддэг. MUST
25
Регистрүүд Регистрүүд нь ассемблер хэлэнд ашиглагдах ба процессорын үйлдлүүд биелэгдэх явцад хэрэглэгддэг. Ерөнхий зориулалтын болон хөвөгч цэгтэй регистрүүд нь ассемблер програмд ашиглагдах ба 32 ширхэг ерөнхий зориулалтын регистртэй. Ерөнхий зориулалтын регистр бүр 32 битийн утга авах ба ассемблер хэлэнд $0, $1, $2, ... , $31 гэж тэмдэглэн ашигладаг. Эдгээр нь 32 хөвөгч цэгтэй регистр юм. MUST
26
Регистрүүд ба ALU Процессорын арифметик логик байгууламж (ALU) нь бүхэл тоон арифметик болон логик үйлдлүүдийг гүйцэтгэдэг. Жишээ болгож 2 бүхэл тоо нэмэхийг авч үзье. Энд, үйлдэлд орж байгаа өгөгдлийг операнд гэх болно. ALU – д орж байгаа операнд нь регистрт хадгалагдах болно. Үр дүн нь эргээд ерөнхий зориулалтын регистрт хадгалагдах болно. ALU – ийн хийх 4 үйлдлийг тодорхойлвол : Үйлдлийг тодорхойлж биелүүлэх Эхний операндыг авах Дараагийн операндыг авах Үр дүнг регистрт хадгалах MUST
27
Регистрүүд ба ALU Зурагт 32 битийн нэмэх үйлдлийг харуулж байна. Операндууд нь регистр $8 болон $9 – өөс орж ирэх бөгөөд үр дүн нь регистр $10 – т хадгалагдаж байна. Энэ үйлдлийг ассемблер хэлдээр бичвэл : addu $10, $8, $9 MUST
28
Машин код Процессорын ALU нь өгөгдлөө үндсэн санах ойгоос авч үйлдлээ хийдэг. Ингэж үйлдлээ хийхдээ нэмэлт өгөгдөл, удирдлагын логик болон хурдтай гүйцэтгэлийг шаарддаг. MIPS процессорын хувьд ALU – д хэрэглэгдэх операндууд болон үр дүн нь регистрт байрлана. Нэмэх үйлдлийн команд нь ассемблер хэлний бичлэгээр addu $10, $8, $9 Үүнийгээ машин кодонд хөрвүүлвэл 0x Харин 2 – тын тоололд MUST
29
Машин код 2 – тын тоололд бичигдсэн код нь 4 – өөрөө багцлагдаж бичигдэх ба багц бүр машин командыг илтгэнэ. Команд бүр тодорхой функцыг агуулна. ямар команд байгааг шалгахдаа : (1) үйлдэл, (2) операнд, (3) операнд, (4) үр дүнг хадгалах газар Команд нь үйлдлийг тодорхойлох талбар болон өгөгдлийн талбарыг агуулдаг. Addu үйлдэл нь 12 битээс тогтох ба 2 багцад хуваагдана. Энэ 2 багцыгаа опкод (opcode) гэж нэрлэнэ. Мөн регистрийн тоо нь 2 – тын бичлэгээсээ хамаарна. MUST
30
Регистрийн ажиллагаа Ассемблер хэлдээрх програмд ерөнхий зориулалтын регистрүүд нь бусад заагч регистрүүдтэй зохицож ажилладаг. Ерөнхий зориулалтын регистрүүд нь $0 – оос $31 хүртэл дугаарлагддаг ба зохицож ажиллахдаа регистр бүр ялгаатай үүрэгтэй байдаг. $0 – оос $31 хүртэл дугаарлагдсан регистр бүр мнемоник нэртэй бөгөөд жишээ нь $0 регистрийн мнемоник нэр нь тэг (zero) байх жишээтэй. MUST
31
Регистрийн ажиллагаа $0 – оос $31 регистрүүд нь хоорондоо ялгаатай ажиллах ба регистр $0 нь тогтмол 0 – ын битээр хэрэглэгддэг. Харин регистр $31 нь дэд програм командруу үсрэх хаягийг агуулж байдаг. Энэ нь хэрвээ цээжлэхэд хүнд санагдвал санаа зовох хэрэггүй харин ч програм бичих явцад аяндаа цээжлэгдэх болно. MUST
32
Машин цикл MIPS процессорын ассемблер програмын хувьд машин циклийг агуулдаг. MIPS нь үндсэн 3 – н алхам бүхий төгсгөлгүй циклүүдээс бүрддэг. Цикл бүр нэг машин командыг биелүүлнэ. Ямар ч процессор машины үйлдлийн дарааллын дагуу ажилладаг. Тиймээс ямарч програм сая сая машин циклээс тогтдог. Програмын тоолуур (PC) нь дараагийн биелэх командыг авах замаар командын дарааллын дагуу гүйцэтгэл явагддаг. Дараагийн командыг барих (Fetch the Instruction) : програмын тоолуур нь дараагийн биелэх машин командын хаягийг агуулах ба санах ойгоос командаа барих болно. MUST
33
Машин цикл Програмын тоолуур нэмэгдэх (Increment the PC) : програмын тоолуурын хаяг нь 4 – өөр нэмэгддэг. Командыг биелүүлэх (Execute the Instruction) : програмын үйлдэл дэх командыг биелүүлнэ. MUST
34
Дараалсан гүйцэтгэл MIPS процессорын командууд бүгд 32 бит (4 байт) – ийн өргөнтэй. Командууд нь програмын эхний команд биелэгдэхэд дараагийн команд биелэгдэх гэх мэт дараалсан замаар ажилладаг. Гүйцэтгэлийн дараалал нь машин командын үсрэлт болон салаалалтаас болж өөрчлөгдөж болдог. зурагт 0x , 0x , болон 0x хаягууддах командууд нь дарааллын дагуу биелэгдэх болно. MUST
35
Удирдлага Командууд нь машин циклд хөрвүүлэгдэхдээ 2 – тын тоон дараалалд бичигдэнэ. Энэ бичлэгдэх битүүд нь ямар үйлдэл гүйцэтгэх болон ямар өгөгдөл хэрэглэх зэрэг электроник зангилааг илэрхийлдэг. Хэрвээ битүүд нь командыг илтгэж чадахгүй бол машин цикл нь тасалдалд орно. Програмын энэ шалтгаан нь мөргөлдөөн юм. Ялангуяа командын хөрвүүлэгдсэн код нь биелэгддэг. Биелэгдэж буй програмын удирдлагын цэг нь гүйцэтгэгдэж байгаа командын санах ойн хаяг юм. Команд ажиллаж байх үед програмын тоолуур нь удирдлагын цэгийн дараах командын хаягийг барьж авдаг. Удирдлагын цэг нь командын дарааллын дагуу шилждэг. MIPS процессорын хувьд санах ойн 4 байтын алхамтайгаар шилждэг. Удирдлагын цэг буюу удирдлагын урсгал нь санах ойд удирдлагын цэг яаж шилжихийг илэрхийлнэ. MUST
36
Multitasking Микрософт компанийн DOS – ын програмуудын удирдлага төгсгөл хүртэл ажиллах ба эргэж DOS – д удирдлага шилждэг. Тиймээс тодорхой нэг хугацаанд зөвхөн нэг л апликэшн програм ажиллаж байдаг. Орчин үеийн компьютерийн систем нь биелэгдэж буй програмын удирдлагын хувьд тасалдлыг зөвшөөрөх болсон. Тасалдал үүссэн үед үйлдлийн систем нь өөр апликешн програмын удирдлагыг өгөх болно. Үүнийг компьютерийн систем нь олон програмыг нэгэн зэрэг гүйцэтгэж байна гэж хэлэх буюу мультитаск гэж нэрлэнэ оны үеээс майнфрем (mainframe) компьютерүүдэд энэ аргыг хэрэглэх болсон ба 1978 онд микрокомпьютерүүдэд, 1995 оноос windows компьютерүүдэд хэрэглэх болсон. MIPS процессорын хувьд мультитаскыг маш сайн хэрэгжүүлдэг. MUST
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.