1 / 31

Компьютерийн зохион байгуулалт, ассемблер хэл

Монгол Улсын Шинжлэх Ухаан Технологийн Их Сургууль. Компьютерийн зохион байгуулалт, ассемблер хэл. Код : HW200 Улирал : Хавар 2009 Багш : С. Байгалтөгс /проф, доктор/. Сэдэв 7 : Санах ойд хандах нь. Санах ойд хандах командууд.

bailey
Download Presentation

Компьютерийн зохион байгуулалт, ассемблер хэл

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Монгол Улсын Шинжлэх Ухаан Технологийн Их Сургууль Компьютерийн зохион байгуулалт, ассемблер хэл Код : HW200 Улирал : Хавар 2009 Багш : С. Байгалтөгс/проф, доктор/ Сэдэв7 :Санах ойд хандах нь [www.cdeq.mn/hw200]

  2. Санах ойд хандах командууд Энэ сэдвээр санах ойгоос регистрүү, регистрээс санах ойруу өгөгдлийг хэрхэн яаж хуулах талаар заах болно. Агуулга : • Ачаалах ба хадгалах • Өгөгдлийн зэрэгцүүлэлт • Байтын дараалал • LW ба SW команд • Дэлээг (delay) ачаалах • Суурь регистрүүд болон хаягийн тооцоолол • LUI команд • Дүрслэлтэй хаягууд [www.cdeq.mn/hw200]

  3. Ачаалах ба хадгалах Аливаа арифметик болон логик үйлдлүүдэд хэрэглэгдэх операндууд нь регистрт агуулагдаж байдаг. Санах ой дох өгөгдөл дээр үйлдэл хийхэд, эхлээд өгөгдөл нь регистрт хуулагдсан байх ёстой. Ачаалах үйлдэл нь санах ойгоос регистрт өгөгдлийг хуулах үйлдэл юм. Хадгалах үйлдэл нь регистрээс үндсэн санах ой руу өгөгдлийг хуулах үйлдэл юм. Word (4 байт) нь ачаалагдах эсвэл хадгалагдахад санах ойн хаяг нь 4 – н өөр байх ёстой. Үүнийг зэрэгцүүлэх хязгаарлалт гэж нэрлэдэг. Хаягууд нь ингэж 4 – өөр байхыг word aligned гэж нэрлэнэ. Энэ хязгаарлалт нь техник хангамжийг хурдан бөгөөд энгийн болгодог. LW команд нь санах ойгоос регистрт word буюу 4 байтыг ачаалдаг. SW команд нь регистрээс ойд word буюу 4 байтыг хадгалдаг. Команд бүр регистр болон санах ойн хаягийг тодорхойлдог. [www.cdeq.mn/hw200]

  4. Том ба бага төгсгөлтэй байтын дараалал Word – ыг ачаалах болон хадгалах команд нь зөвхөн нэг санах ойн хаягийг хэрэглэдэг. 4 байтын хамгийн бага хаяг нь зэрэгцээ 4 байтын эхний хэсгийн хаягт хэрэглэгддэг. Санах ойн 4 байтад 32 бит өгөгдөл нь хэрхэн байрладаг вэ? Өгөгдлийн ямар хэсэг нь санах ойн аль байтаас байрлах сонголт байдаг. Энэ нь ерөнхийдөө хоёр арга байдаг : Том төгсгөлтэй байтын дараалал : Өгөгдлийн хамгийн эхний байт нь хаягийн бага байтад байрладаг. Өгөгдлийн үлдсэн хэсэг нь санах ойн 3 хаягт дараалан байрладаг. Бага төгсгөлтэй байтын дараалал : Өгөгдлийн хамгийн сүүлийн байт нь хаягийн бага байтад байрладаг. Өгөгдлийн үлдсэн хэсэг нь санах ойн 3 хаягт дараалан байрладаг. [www.cdeq.mn/hw200]

  5. Том ба бага төгсгөлтэй байтын дараалал Эдгээр тодорхойлолтоор өгөгдлийн 32 бит нь 32 битийн тэмдэггүй бүхэл тоог илтгэж байгаа. Жишээ нь 32 бит 0x12345678өгөгдөл нь 0x00400000хаягнаас эхлэн байрлана. Хамгийн эхний байт нь 0x12, хамгийн бага байт нь 0x78болно. [www.cdeq.mn/hw200]

  6. MIPS болон SPIM – ын байтын дараалал Бүх процессорууд дээрх нэг байтын бит 7 нь хамгийн хэрэгтэй чухал бит юм.Доор үзүүлснээр зүүн бит нь : 00010010 Том төгсгөлийн байтыг өгсөх дараалалтай байт гэж нэрлэдэг. MIPS процессорын хувьд аль ч байтын дарааллыг техник хангамжийн тохиргооноос хамаарч хэрэглэх боломжтой. Компьютерийн системийн дизайнер нь компьютерийн системдэх компонентуудаас хамаарч аль сонголтыг хийж болдог. Мөн SPIM нь компьютерийн байтын дарааллыг хэрэглэдэг. • Intel 80x86: little-endian. • Macintosh: big-endian. [www.cdeq.mn/hw200]

  7. MIPS хаяглалт Регистрт word – ыг ачаалах MIPS команд нь lwкоманд юм. Харин word – ыг хадгалах команд нь sw юм. Регист болон санах ойн хаяг нь тодорхой байх ёстой. MIPS процессорын команд нь 32 бит бөгөөд мөн санах ойн хаяг нь 32 бит болно. Команд нь санах ойд хандахдаа бааз регистр болон шилжлэг хаяг (offset) – ийг хэрэглэдэг. Бааз регистр нь ерөнхий зориулалтын регистр бөгөөд 32 битийн хаягийг агуулдаг. Offset нь 16 битийн тэмдэгтэй бүхэл тоо бөгөөд командад агуулагддаг. Бааз регистр дэх хаягийн нийлбэр нь шилжлэг хаяг болон хаягийг агуулдаг. Ачаалах команд нь ассемблер хэлдээр [www.cdeq.mn/hw200]

  8. MIPS хаяглалт Гүйцэтгэлийн хугацаа нь хоёр зүйлийг багтаана. • Хаяг нь бааз регистр b, болон шилжлэг хаяг off хоёрыг тооцоолно. • Өгөгдлийг санах ойн тэр хаягнаас барих болно. [www.cdeq.mn/hw200]

  9. Ачаалах машин команд Командын машин кодыг энд харуулъя. Үүнд бааз регистр, хадгалах регистр болон offset тодорхойлогдсон. Мөн санах ойн хаягийг шууд агуулаагүй. Энэ командын гүйцэтгэлийг тайлбарлавал : • Регистр $10 дахь 32 бит хаяг нь : 0x00400000 • Offset нь өргөтгөгдсөн 32 бит : 0x00000060 • Нийт 32 битийн хаяг нь : 0x00400060 • Үндсэн санах ой нь тэр хаягнаас өгөгдлийг хайх болно [www.cdeq.mn/hw200]

  10. Ачаалах машин команд • Нэг машин циклийн дэлээний (delay) дараа өгөгдөл нь регистр $8 – д дамжигдаж хүрэх болно. Өгөгдөл нь санах ойгоос бэлэн болохын өмнө нэг машин циклийн дэлээ ажиллах болно. Процессороос санах ойд хандах нь тодорхой цаг зарцуулна. Ачаалах үйлдэл явагдаж байх үед процессор нь хүлээдэггүй харин өөр ямар нэг команд гүйцэтгэж байдаг. Ачаалах командын дараагийн команд нь регистр хэрэглэхгүй тохиолдол байдаг ба мөн үйлдэлгүй ч команд байдаг. [www.cdeq.mn/hw200]

  11. Хадгалах команд Word – ыг хадгалах команд swнь регистрээс санах ой руу өгөгдлийг хуулдаг. Регистр нь өөрчлөгдөхгүй бөгөөд санах ойн хаяг нь бааз регистрээр тодорхойлогдоно. [www.cdeq.mn/hw200]

  12. Бааз регистр sw $12 , 0xFFF8($13) or sw $12 , -8($13) Эхний команд нь хасах 8 буюу хоёртын гүйцээлтээр тодорхойлогдсон. Ингэхдээ хоёртын бичлэгээрээ машин командад агуулагдах болно. Энэ нь унших болон тооцоолоход удаан байдаг. Дараагийн хоёрдох командад хасах 8 нь тэмдэгтэй аравтын бичлэгээр илэрхийлэгдсэн байна. Харин ассемблер нь энэ 2 командыг ижилхэн машин командад хөрвүүлдэг. 32 битийн бааз регистр болон offset – ыг хэрэглэн 32 битийн lwэсвэл sw команд нь санах ойд хандана. Харин бааз регистр нь бааз хаягаа авахдаа lui командыг хэрэглэдэг. Энэ нь шууд операндыг хадгалах регистрийн эхний хоёр байтад хуулдаг. [www.cdeq.mn/hw200]

  13. Бааз регистр Жишээ нь зурагт үзүүлсэн санах ой нь регистр $12 руу 0x00040010хаяг дахь word – ыг ачаалж байгаа. Lui команд нь бааз регистрийг тавьж өгөх болно. Сүүлийн 16 байтыг дүүргэхдээ ORI командыг хэрэглэнэ. orid,s,imm [www.cdeq.mn/hw200]

  14. Бааз регистр Зурагт lwкоманд нь регистр $12 руу 0x0060500Cдэх word – ыг ачаалж байна. [www.cdeq.mn/hw200]

  15. Хувьсах дараалал ORI командын хувьд регистр $13 – ын сүүлийн 16 бит нь : Командуудын бусад дарааллын хувьд мөн ингэж ажиллах болно : учир нь хаягийн эхний хагас нь 16 бит, lw командын шилжлэг хаяг нь 16 бит, энэ хоёр нь санах ойн аль нэг байт хаягийг авах болно. 0x0060500C хаягандээрх word – ыг регистр $12 – т ачаалахдаа хаяг нь 0x0060ба 0x500C гэж хоёр хуваагдах болно. Хаягийн эхний 16 бит нь регистр $13 – т ачаалагдах бөгөөд сүүлийн 16 бит нь offset болж хэрэглэгдэнэ. [www.cdeq.mn/hw200]

  16. Массив Intтөрлийн массив нь дараалан байрласан санах ойн байрлал дахь word – ын дараалал юм. жишээ нь : Энэ нь С хэлдээрхь массивын тодорхойлолт бөгөөд 6 – н элементтэй массивт 0 – 5 гэсэн утгыг тодорхойлсон зарлагаа юм. [www.cdeq.mn/hw200]

  17. Жишээ програм Бидний өмнө үзсэнээр санах ойгоос регистрт ачаалах үйлдэл нь хөнгөвтөр харагдах боловч машин хэлний түвшинд тэдгээр нь арай өөр байх болно. Одоо жишээ програмаа эхлүүлье. Энэ програм нь 5x2 -12x + 97 илэрхийллийг үнэлэх юм. x утга нь санах ойд байрлах ба үр дүнгээ санах ойн poly байрлалд хадгалах болно. [www.cdeq.mn/hw200]

  18. Жишээ програм(Тэмдэгт хаяг) Жишээ програмын дүрслэлээр x болон poly нь санах ойн байрлалууд бөгөөд програмын ажиллагааны үед хаягууд нь 32 бит байдаг. [www.cdeq.mn/hw200]

  19. Жишээ програм(Тэмдэгт хаяг) Харин ассемблер source кодны хувьд санах ойн байрлалыг заах нэрийг хэрэглэх нь тохиромжтой байдаг. Эдгээр нэрүүдийг “Тэмдэгт хаяг” гэж нэрлэдэг. Ассемблерийн хувьд чухал зүйлийн нэг нь энэ тэмдэгт хаяг бөгөөд жишээ програмын хувьд командын ажиллагааг тайлбарласан хэсгийг анхаарах хэрэгтэй. Жишээ програмын хувьд .dataнь ассемблерийн директив бөгөөд энд санах ойн өгөгдлийн хэсгийн эхлэлийг заах болно. .word нь ассемблерийн директив бөгөөд энд 32 битийн хоёртын гүйцээлт бүхэл тоог хийх болно. Бүхэл тоо нь 10 суурьтайгаар тодорхойлогдсон. Жишээнд үзүүлсэн .word 17 нь бүхэл тооны 32 бит хоёртын гүйцээлтийн дүрслэл дэх арав суурьтай 17 – г илэрхийлж байна. [www.cdeq.mn/hw200]

  20. Жишээ програм SPIM – ын өгөгдлийн хэсэг нь 0x10000000 - ээс эхлэх бөгөөд lui командыг хэрэглэж өгөгдлийн хэсгийн эхний хаягийг регистр $10 ачаалах болно. Програмын ажиллагаа : [www.cdeq.mn/hw200]

  21. Жишээ програмын код [www.cdeq.mn/hw200]

  22. Санах ойд хандах Энэ сэдвээр санах ойгоос регистрт ачаалах болон регистрээс санах ойд хадгалах swболон lw командуудаас өөр командууд байдаг ба тэдгээрийн хэрэглээ зэргийг тайлбарлах болно. Эдгээр командыг swболон lw командтай ерөнхийдөө ижилхэн хэрэглэгддэг. Агуулга : • Байтыг хадгалах болон ачаалах lb, lbu, болонsb командууд • Halfword буюу 16 битийг ачаалах болон хадгалах lh, lhu, болонshкомандууд • Арифметик [www.cdeq.mn/hw200]

  23. Нэг байтыг ачаалах Энд үзэх 2 команд нь санах ойн хаягнаас нэг байтыг ачаалдаг. Хаяг нь ажиллагааны үед шилжлэг хаяг болон бааз регистрийн нийлбэрээр тооцоологдоно.Эдгээр команд нь 32 битийн регистрт 8 битийг хэрхэн хийж хадгалдагаараа ялгаатай. lb команд нь санах ойгоос регистрийн бага 8 – н битэд байтыг ачаалдаг. Эдгээр битүүд нь регистрт 0 -7 гэж байрлана. Харин бит 7 - г регистрийн 8 – 31 битүүдэд хуулдаг. [www.cdeq.mn/hw200]

  24. Нэг байтыг ачаалах Өөрөөр хэлбэл lb команд нь тодорхойлогдсон хаягандахь байтыг 32 бит хүртэл тэмдгээр өргөтгөж регистрт ачаалдаг гэсэн үг юм. Lb команд дахь байт нь -127 ... +128 хязгаар дахь 8 битийн тэмдэгтэй бүхэл тоо байх болно. Харин lbuкоманд нь : lbuкоманд нь регистрийн 8 – 31 хүртэлх битүүдийг тэгээр дүүргэдэг. Энэ командад хэрэглэгдэх байт нь asciiтэмдэг эсвэл 8 битийн тэмдэггүй бүхэл тоо байх болно. [www.cdeq.mn/hw200]

  25. Нэг байтыг хадгалах Байтыг ачаалах болон хадгалах үйлдэл нь текст боловсруулах болон доод түвшний системийн програмуудад хэрэглэгддэг. Мөн график орчны програмууд, тэдгээрийн үйлдлүүдэд дахин дахин ашиглагддаг. [www.cdeq.mn/hw200]

  26. Үргэлжлэл lb, lbu, sb 3 – н командууд нь санах ойд зэрэгцүүлэлт шаарддаггүй. Санах ой дахь байт бүр нь програмын өгөгдөлд хэрэглэгддэг. Энэ нь бичвэрийн тэмдэг зэрэг нь байтаар илэрхийлэгдэн хадгалагддаг гэсэн үг. Мөн байтыг ачаалах болон хадгалах команд нь системийн оролт ба гаралт зэрэг олон хэлбэрээр хэрэглэгддэг. Нэг хэрэглэгчээр соронзон туузанд бичигдсэн өгөгдөл нь өөр нэг компьютерт хэрэглэгдэж зөөврийн байдлаар ашиглагддаг. Зөөврийн өгөгдлийг бэлдэхдээ өгөгдлийн формат нь байт байтаар дүрслэгдэх ба формат нь дараалал буюу дүрмийн дагуу байх бөгөөд өгөгдлийг унших болон бичихэд компьютерийн байтын дараалал хамаардаггүй. [www.cdeq.mn/hw200]

  27. Туузан бичигч(дараалан бичих) Регистрийн бага байт нь эхэлж санах ой руу бичигддэг. Харин регистр $9 – өөс эхлэн ахлах байт хүртэлх үлдсэн байт нь нэг нэгээрээ санах ойд бичигдэх болно. [www.cdeq.mn/hw200]

  28. Програмын ажиллагаа .space директив нь санах ойн 102410 байтыг агуулах бөгөөд энэ буферт туузан буюу өгөгдөл нь ар араасаа дараалан бичигдэнэ. [www.cdeq.mn/hw200]

  29. Halfwordачаалах MIPS процессорын хувьд halfwordнь 2 байт буюу 16 бит байдаг. Энэ нь өгөгдлийн урт зэрэгт их хэрэглэгддэг. ANSI С – ын хувьд short өгөгдлийн төрөл нь 2 байт байдаг. Тиймээс MIPS нь halfword– ыг ачаалах болон хадгалах командуудтай. Доор halfword– ыг ачаалах хоёр командыг үзүүлэв. Нэг команд нь регистрийн ахлах 2 байтад санах ойн halfword– ын тэмдгийн өргөтгөл байрлах болно. Нөгөө команд тэгээр өргөтгөх болно. [www.cdeq.mn/hw200]

  30. Halfwordхадгалах Тодорхойлогдсон регистрийн бага хоёр байт нь санах ой руу хуулагдана. Харин ахлах хоёр байт нь ямар байх хамаагүй. Мэдээж өгөгдөл санах ой руу хуулагдаж байх үед регистр нь өөрчлөгдөхгүй. MIPS процессорын арифметикийн командууд нь өгөгдөл нь хэрхэн регистрт ачаалагдаж байгаа нь чухал биш бүрэн регистрийг (full register) хэрэглэдэг. Жишээ нь addu команд нь операнд регистрийн нэг нь lhэсвэл lb командаар ачаалагдсан ч бүрэн 32 битийн нэмэх үйлдлийг гүйцэтгэдэг. [www.cdeq.mn/hw200]

  31. Бүх арифметик 32 бит MIPS процессорт 8 битийн арифметикийн команд байдаггүй. Хоёр регистрийн бага байтуудаар илэрхийлэгдсэн хоёр операндын хувьд fullword(бүрэн) нэмэх үйлдэл нь бага 8 байт буюу 8 битийн нэмэх үйлдэлтэй ижилхэн үр дүн гарах болно.Мөн 32 бит үйлдлийн дараах бага байт нь 8 битийн арифметик үйлдлийн үр дүнтэй ижилхэн биш байж болдог. Эдгээр нь компилятортой холбоотой бөгөөд жишээ нь ANSI C – ын хувьд short intтөрлийн хувьсагч нь бүх компьютер дээр ижилхэн ажилладаг. Харин 16 битийн математик нь бүх компьютерийн архитектур дээр ижилхэн ажилладаггүй. MIPS процессорт C – г компайлдахад операндууд нь short intүед арифметик үйлдэл бүрт нэмэлт машин командыг нэмж өгдөг. MIPS процессорын 16 битийн арифметик нь 32 битийн арифметикаас харьцангуй удаан. [www.cdeq.mn/hw200]

More Related