SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Монгол Улсын Шинжлэх Ухаан Технологийн Их
                    Сургууль

                                      КОМПЬЮТЕРИЙН
                                         ЗОХИОН
                                       БАЙГУУЛАЛТ,
                                      АССЕМБЛЕР ХЭЛ


Код : HW200
Улирал : Хавар 2009
Багш : С. Байгалтөгс /проф, доктор/
Өргөтгөсөн Ассемблер

 Үндсэн ассемблер хэл нь машин кодоос нэг түвшин илүүтэйгээр
  процессорын харагдацыг бий болгоно. Машин үйлдэл, регистр,
  хаягуудыг тодорхойлохдоо машин код нь бит төлөвүүдийг
  ашиглана. Үндсэн ассемблерт эдгээрийг тодорхойлоход
  симболуудыг мөн ашигладаг. Үндсэн ассемблерийн команд бүр
  нэг машин командтай шууд зохицдог. Өргөтгөсөн ассемблер нь
  энгийн MIPS процессороос илүү олон тооны командуудтай
  абстракт маши үйлдлийг хэрэгжүүлдэг. Эдгээр үйлдлүүдийн
  олонх нь хэд хэдэн машин командтай зохицдог.
Бүлгийн сэдвүүд :
 Регистрийн mnemonic нэрс.
 Псевдо (хуурамч) командууд ба псевдо компьютер.
 move псевдо команд.
 li псевдо команд.
 la псевдо команд.
 lw псевдо команд.
 sw псевдо команд.
 nop псевдо команд.               [www.cdeq.mn/hw200]
Mnemonic регистрүүд

 Регистрүүдийг “ерөнхий зориулалтын” гэж
  нэрлэнэ. Энэ нь програм хангамжийн хувьд олон
  янзын зорилго бүхий регистрүүдийг
  тодорхойлоход тохирмжтой юм. Ингэж нэрлэх нь
  программистуудад будлихаас сэргийлж
  хоорондоо тохиролцоо бий болгоход дөхөм
  байдаг юм. Өргөтгөсөн ассемблер нь
  регистрүүдэд mnenomic нэрс ашиглаж тэдгээр нь
  хэрхэн ашиглагддагыг үзүүлдэг.
 Жишээ нь, регистр $8-аас $15 хүртэл регистрүүд
  түр зуурын утга хадгалах зориулалттай.
  Эдгээрийн регистрийн mnemonic нэрс нь $t0-
  аас $t7 хүртэл байна.

                         [www.cdeq.mn/hw200]
Mnemonic регистрүүд




 Зөвхөн регистр $0-ээс $31 хүртэлх нь өөр
  байдаг ($0 нь үргэлж тэгээр дүүрэн харин $31
  буцах хаягыг автоматаар хадгалах үүрэгтэй).
  Үлдсэн регистрүүд нь үндсэндээ ижил.
                         [www.cdeq.mn/hw200]
Өргөтгөсөн Ассемблер

 Өргөтгөсөн ассемблер нь регистрийн
  дугааруудын оронд mnemonic нэрс ашиглах
  боломж олгоно. Ингэснээр тухайн регистрээр
  юу хийж байгааг мөрдөхөд тус болдог.
 Өргөтгөсөн ассемблерийг ашигласнаар
  MIPS-д байхгүй нэмэлт боломжуудыг SPIM
  хэрэгжүүлдэг. Өргөтгөсөн ассемлбер нь
  өргөтгөл бүхий эх кодуудыг хүлээн авдаг. Эх
  код дах өргөтгөлүүд нь үндсэн ассемблер
  хэлэнд орлуулагдах ба дараа нь машин код
  руу хөрвүүлэгдэнэ.
                        [www.cdeq.mn/hw200]
Өргөтгөсөн Ассемблер

 Өргөтгөсөн ассемблер хэл хэрхэн үндсэн
 ассемблер хэл рүү хөрвүүлэгдэж байгааг
 зурган дээр үзүүлэв. Дараа нь үндсэн
 ассемблер код машин код руу
 хөрвүүлэгдэнэ.




                      [www.cdeq.mn/hw200]
Өргөтгөсөн Ассемблер




              [www.cdeq.mn/hw200]
Регистер дэх түр зуурын утга

 Ихэнх ассемблер програмууд нь дээд түвшний
  програмчлалын хэлний адил subroutine-н
  цуглуулга байдаг.
 Subroutine нь дотоод хувьсагчдыг (local
  variables) ашиглах ба эдгээр хувьсагчид нь
  зөвхөн subroutine-д өөрт нь
  ашиглагдана. Түр зуурын регистрүүд
  болон $t0-$t7,$t8,
  ба $t9 мөн хадгалагдсан регистрүүд
  болох $s0-$s7 нь дотоод хувьсагчдад
  ашиглагдана.
                         [www.cdeq.mn/hw200]
Регистер дэх түр зуурын утга

 Програм бичих явцад түр зуурын болон
 хадгалагдсан регистрүүдийг хэдийд ч
 ашиглах боломжтой байдаг. Харин
 subroutine дуудах үед түр зуурын
 регистрүүд өөрчлөгдөж болзошгүй.
 Хадгалагдсан регистрүүдийн хувьд ямар ч
 subroutine дуудалтын үед утгаа
 өөрчлөхгүй. Жишээ програмыг үзүүлэв:


                     [www.cdeq.mn/hw200]
Регистер дэх түр зуурын утга
 ori $t0,$0,32        # load 32 into a temp register
 ori $s0,$0,13         # load 13 into a saved
    register
   jal subrout        # subroutine call (don't worry
    about # the details of this, now).
   sll $0,$0,0         # delay slot
   back: addu $s0,$s0,$t0          # return from
    subroutine;
                                      # temp register
    $t0 may have changed.
                                      # saved
    register $s0 has not changed.
                               [www.cdeq.mn/hw200]
Регистер дэх түр зуурын утга

 back дээрх илэрхийлэл нь алдаатай
 илэрхийлэл юм. Энэ тохиолдолд түр
 зуурын регистр $t0 нь subrout нэртэй
 subroutine дуудалтаар өөрчлөгдөж
 болзошгүй юм.




                      [www.cdeq.mn/hw200]
Бусад регистрүүд
 Регистрүүд нь хувьсагчид болон аргументуудад, мөн бусад
  зориулалтаар ашиглагдах хэлбэрээрээ групп болж
  хуваагсдан байдаг.($0, $v0-$v1, $a0-$a3, $t0-$t9, $s0-$s7).
 Үйлдлийн системийн хамгийн тулгуур хэсэг нь kernel
  байдаг. Үйлдлийн системийн бусад хэсгүүд нь kernel-ийн
  функцуудаар биелэгддэг. $k0 ба $k1 регистрүүд нь kernel-д
  зориулагдан нөөцлөгдсөн байдаг. Хэрэглээний програмууд
  эдгээрийг оролдох шаадлагагүй юм.
 SPIM нь үйлдлийн системтэй цуг ирдэггүй боловч хэрэв
  хүсэлт гарвал $k0 ба $k1 ийн ашиглагдаг trap handler-г
  ачаалдаг.
 Регистр $gp, $sp, ба $fp ууд нь үндсэн регистр хэлбэрээр
  ашиглагдаж санах ойн хэсгүүд рүү хандалт хийдэг.



                                  [www.cdeq.mn/hw200]
Псевдо командууд

 addu команд нь бит төлөвийг
  регистрүүдийн хооронд хуулна. Үүнийг
  ихэвчлэн move буюу шилжүүлэх үйлдэл
  гэж нэрлэдэг бөгөөд энэ үйлдэл нь эх
  регистрийн утга өөрчилдөггүй.
 Псевдо команд нь нэг болон түүнээс олон
  үндсэн ассемблер командын оронд
  хэрэглэгдэх өргөтгөсөн ассемблерийн
  команд юм.

                      [www.cdeq.mn/hw200]
Псевдо командууд

 Өргөтгөсөн ассемблер нь хэд хэдэн псевдо
  команд хэрэгжүүлдэг. move псевдо
  командын жишээ:
     move d,s      # эх регистр s-н утгыг
  зорьсон регистр d-д шилжүүлнэ.
 d ба s регистрүүд mnemonic нэрээр
  тодорхойлогдож болно( $t5 эсвэл $zero
  г.м). Эсвэл регистрийн дугаараар
  тодорхойлогдоно( $13 эсвэл $0).
                       [www.cdeq.mn/hw200]
“Дамжуулах Илэрхийлэлquot;

 move команд нь дээд түвшний хэлэн дэх
  дамжуулах илэрхийлэлтэй адил
  уншигдана:
    j = val; val –н утгыг j хувьсагчид
  хуулна.
    move $s1,$t3
 $t3-ын утгыг регистр $s1 руу хуулна.



                       [www.cdeq.mn/hw200]
Шуурхай ачаалах

 Дээр үзүүлсэн ori команд нь бит төлөвийг
  командаас регистр рүү хуулна. (16 битийн тэг
  өргөтгөлтэй шуурхай операндыг 32 бит рүү
  дуудна.) Энэ үйлдлийг ихэвчлэн шуурхай
  ачаалах үйлдэл гэж нэрлэдэг. Энэ нь шуурхай
  боломжтой утга агуулсан регистрийг
  ачаалдаг. (санах ой руу зөөлгүйгээр)
 Энэ үйлдлийн ассемблер хэл дэх mnemonic
  нэр нь li юм. Ассемблер энэ псевдо командыг
  тохирох үндсэн команд руу хөрвүүлдэг
    li d,value    # Регистр $d-г value утгатай
  ачаална (Утга нь 16 эсвэл 32 бит байж болно)
                        [www.cdeq.mn/hw200]
Хэд хэдэн хөрвүүлэлт

 Шуурхай ачаалах псевдо команд нь бүхэл
  тоон утгатай регистрийг ачаалахад
  хэрэглэгддэг.Өөр нэг жишээ:
 li $t2,-156
  Дээрх команд нь -15610 -ийн 2-тын
  гүйцээлтийг регистр $t2 руу оруулна. Энэ
  үйлдлийг ori командаар хийж болох боловч
  тухайн командын шуурхай талбар нь 16
  битийн тэгээс их бүхэл тоо байх учиртай юм.
  li-ийн шуурхай утга нь хасах ба ялгаатай
  хөрвүүлэлтийг ашиглана:
                        [www.cdeq.mn/hw200]
Хэд хэдэн хөрвүүлэлт

 li $v2,-156 == addiu $v2,$0,-156
  (addiu команд нь нэмэгдэхүүний үйлдэл
  хийхээс өмнө шуурхай операндаа
  тэмдэгтэн өргөтгөл хийнэ. addiu команд нь
  хасах утгатай бүхэл тоотой хамт
  ашиглагдаж болно. Өргөтгөсөн ассемлбер
  нь li командыг шуурхай утгын тэмдэгээс
  хамаарч ялгаатай үндсэн команд руу
  хөрвүүлнэ.

                        [www.cdeq.mn/hw200]
Хоёр үндсэн команд

 Шуурхай операндууд нь үргэлж 16 бит
  хэмжээтэй байна. Хоёр машин
  командуудыг 32 битийн регистрийг 32
  битийн бүхэл тоотой ачаалах боломжтой:
 li $v2,0x12345678 == lui $v2,0x1234
                   ori $v2,$v2,0x5678




                     [www.cdeq.mn/hw200]
Хоёр үндсэн команд

 Энд li нь хоёр үндсэн команд руу
  хөрвүүлэгдсэн байна. Эхнийх нь $v2-ийн
  дээд хагас (top half)-г ачаална. Хоёр дах нь
  ori үйлдэл ашиглан доод хагасыг (bottom
  half) ачаална. Үүнийг нэмэх, хасах дурын
  бүхэл тооны хувьд хийж болно:




                        [www.cdeq.mn/hw200]
Хоёр үндсэн команд

 li d,value   # Регистр $d-г нэмэх эсвэл
  хасах утга quot;value“-тай ачаална. Утга нь 32
  бит хүртэл дурын бүхэл тоо байна.
 Өргөтгөсөн ассемблер нь автоматаар
  энэхүү псевдокомандыг бодит командын
  хамгийн ашигтай дараалал руу хөрвүүлнэ.




                       [www.cdeq.mn/hw200]
Жишээ програм

 Шуурхай ачаалах үйлдлийг ашигласан
 жишээ програмыг үзүүллээ.




                     [www.cdeq.mn/hw200]
Жишээ програм

   ## liEg.asm
   ##
   .text
   .globl main
   main: li $t0,43   # first value
   li $t1,-96 # second value
   li $t7,-16772555 # third value
   addu $t0,$t0,$t1 # add the values
   addu $t0,$t0,$t7 # leave result in $t0
   ## end of liEg.asm

                           [www.cdeq.mn/hw200]
Жишээ програм

 li команд бүр ялгаатай үндсэн командууд
 руу хөрвүүлэгдэнэ. SPIM дээр програмыг
 ажиллуулахад эхлээд settings цэсийг
 харна. quot;allow pseudo instructionsquot; хэсгийг
 чагтлаад quot;bare machine“ хэсгээс чагтыг
 авна.




                       [www.cdeq.mn/hw200]

Más contenido relacionado

La actualidad más candente

Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...
Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...
Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...Adilbishiin Gelegjamts
 
ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)
ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)
ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)Vadim Kotelnikov
 
МЭРТ 19_04_2009 МФЦ регионы Astrakhan
МЭРТ 19_04_2009 МФЦ регионы AstrakhanМЭРТ 19_04_2009 МФЦ регионы Astrakhan
МЭРТ 19_04_2009 МФЦ регионы AstrakhanVictor Gridnev
 
02 Citrus Systems S Pb
02 Citrus Systems S Pb02 Citrus Systems S Pb
02 Citrus Systems S PbLiudmila Li
 
Ошибки при формулировании исковых требований в исках о защите прав 
относител...
Ошибки при формулировании исковых требований в исках о защите прав 
относител...Ошибки при формулировании исковых требований в исках о защите прав 
относител...
Ошибки при формулировании исковых требований в исках о защите прав 
относител...Krainiak
 
Бие даалтын стандарт
Бие даалтын стандартБие даалтын стандарт
Бие даалтын стандартAdilbishiin Gelegjamts
 
РИФ 2008: Электронные платежные системы: универсализация или специализация? (...
РИФ 2008: Электронные платежные системы: универсализация или специализация? (...РИФ 2008: Электронные платежные системы: универсализация или специализация? (...
РИФ 2008: Электронные платежные системы: универсализация или специализация? (...E-Money News
 
Socionics (MBTI) in Life Management club (rus)
Socionics (MBTI) in Life Management club (rus)Socionics (MBTI) in Life Management club (rus)
Socionics (MBTI) in Life Management club (rus)dan voronov
 
Global Compact Performance Model
Global Compact Performance ModelGlobal Compact Performance Model
Global Compact Performance ModelHOSHVA PR
 
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/ Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/ Adilbishiin Gelegjamts
 
Единая электронная система информирования по предоставлению государственных у...
Единая электронная система информирования по предоставлению государственных у...Единая электронная система информирования по предоставлению государственных у...
Единая электронная система информирования по предоставлению государственных у...Victor Gridnev
 
Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../
Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../ Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../
Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../ Adilbishiin Gelegjamts
 
толмачёва с.в. обобщение опыта работы
толмачёва с.в. обобщение опыта работытолмачёва с.в. обобщение опыта работы
толмачёва с.в. обобщение опыта работыEgor Tolmachov
 

La actualidad más candente (18)

1
11
1
 
Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...
Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...
Удирдлагын зохион байгуулалт, зохион байгуулалтын хэлбэрүүд ...
 
2
22
2
 
ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)
ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)
ПРЕДПРИИМЧИВЫЙ ЛИДЕР (Ten3 микро-курс - 10 слайдов)
 
МЭРТ 19_04_2009 МФЦ регионы Astrakhan
МЭРТ 19_04_2009 МФЦ регионы AstrakhanМЭРТ 19_04_2009 МФЦ регионы Astrakhan
МЭРТ 19_04_2009 МФЦ регионы Astrakhan
 
Презентація-огляд «Секрети успіху світових брендів» (історії досягнень у біз...
Презентація-огляд «Секрети  успіху світових брендів» (історії досягнень у біз...Презентація-огляд «Секрети  успіху світових брендів» (історії досягнень у біз...
Презентація-огляд «Секрети успіху світових брендів» (історії досягнень у біз...
 
4
44
4
 
02 Citrus Systems S Pb
02 Citrus Systems S Pb02 Citrus Systems S Pb
02 Citrus Systems S Pb
 
Ошибки при формулировании исковых требований в исках о защите прав 
относител...
Ошибки при формулировании исковых требований в исках о защите прав 
относител...Ошибки при формулировании исковых требований в исках о защите прав 
относител...
Ошибки при формулировании исковых требований в исках о защите прав 
относител...
 
Бие даалтын стандарт
Бие даалтын стандартБие даалтын стандарт
Бие даалтын стандарт
 
РИФ 2008: Электронные платежные системы: универсализация или специализация? (...
РИФ 2008: Электронные платежные системы: универсализация или специализация? (...РИФ 2008: Электронные платежные системы: универсализация или специализация? (...
РИФ 2008: Электронные платежные системы: универсализация или специализация? (...
 
Socionics (MBTI) in Life Management club (rus)
Socionics (MBTI) in Life Management club (rus)Socionics (MBTI) in Life Management club (rus)
Socionics (MBTI) in Life Management club (rus)
 
Global Compact Performance Model
Global Compact Performance ModelGlobal Compact Performance Model
Global Compact Performance Model
 
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/ Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
 
Единая электронная система информирования по предоставлению государственных у...
Единая электронная система информирования по предоставлению государственных у...Единая электронная система информирования по предоставлению государственных у...
Единая электронная система информирования по предоставлению государственных у...
 
Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../
Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../ Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../
Үйлдвэрлэлийн зардал-1а /тогтмол болон хувьсах зардал гэх мэт.../
 
толмачёва с.в. обобщение опыта работы
толмачёва с.в. обобщение опыта работытолмачёва с.в. обобщение опыта работы
толмачёва с.в. обобщение опыта работы
 
EGF
EGFEGF
EGF
 

corel

  • 1. Монгол Улсын Шинжлэх Ухаан Технологийн Их Сургууль КОМПЬЮТЕРИЙН ЗОХИОН БАЙГУУЛАЛТ, АССЕМБЛЕР ХЭЛ Код : HW200 Улирал : Хавар 2009 Багш : С. Байгалтөгс /проф, доктор/
  • 2. Өргөтгөсөн Ассемблер  Үндсэн ассемблер хэл нь машин кодоос нэг түвшин илүүтэйгээр процессорын харагдацыг бий болгоно. Машин үйлдэл, регистр, хаягуудыг тодорхойлохдоо машин код нь бит төлөвүүдийг ашиглана. Үндсэн ассемблерт эдгээрийг тодорхойлоход симболуудыг мөн ашигладаг. Үндсэн ассемблерийн команд бүр нэг машин командтай шууд зохицдог. Өргөтгөсөн ассемблер нь энгийн MIPS процессороос илүү олон тооны командуудтай абстракт маши үйлдлийг хэрэгжүүлдэг. Эдгээр үйлдлүүдийн олонх нь хэд хэдэн машин командтай зохицдог. Бүлгийн сэдвүүд :  Регистрийн mnemonic нэрс.  Псевдо (хуурамч) командууд ба псевдо компьютер.  move псевдо команд.  li псевдо команд.  la псевдо команд.  lw псевдо команд.  sw псевдо команд.  nop псевдо команд. [www.cdeq.mn/hw200]
  • 3. Mnemonic регистрүүд  Регистрүүдийг “ерөнхий зориулалтын” гэж нэрлэнэ. Энэ нь програм хангамжийн хувьд олон янзын зорилго бүхий регистрүүдийг тодорхойлоход тохирмжтой юм. Ингэж нэрлэх нь программистуудад будлихаас сэргийлж хоорондоо тохиролцоо бий болгоход дөхөм байдаг юм. Өргөтгөсөн ассемблер нь регистрүүдэд mnenomic нэрс ашиглаж тэдгээр нь хэрхэн ашиглагддагыг үзүүлдэг.  Жишээ нь, регистр $8-аас $15 хүртэл регистрүүд түр зуурын утга хадгалах зориулалттай. Эдгээрийн регистрийн mnemonic нэрс нь $t0- аас $t7 хүртэл байна. [www.cdeq.mn/hw200]
  • 4. Mnemonic регистрүүд  Зөвхөн регистр $0-ээс $31 хүртэлх нь өөр байдаг ($0 нь үргэлж тэгээр дүүрэн харин $31 буцах хаягыг автоматаар хадгалах үүрэгтэй). Үлдсэн регистрүүд нь үндсэндээ ижил. [www.cdeq.mn/hw200]
  • 5. Өргөтгөсөн Ассемблер  Өргөтгөсөн ассемблер нь регистрийн дугааруудын оронд mnemonic нэрс ашиглах боломж олгоно. Ингэснээр тухайн регистрээр юу хийж байгааг мөрдөхөд тус болдог.  Өргөтгөсөн ассемблерийг ашигласнаар MIPS-д байхгүй нэмэлт боломжуудыг SPIM хэрэгжүүлдэг. Өргөтгөсөн ассемлбер нь өргөтгөл бүхий эх кодуудыг хүлээн авдаг. Эх код дах өргөтгөлүүд нь үндсэн ассемблер хэлэнд орлуулагдах ба дараа нь машин код руу хөрвүүлэгдэнэ. [www.cdeq.mn/hw200]
  • 6. Өргөтгөсөн Ассемблер  Өргөтгөсөн ассемблер хэл хэрхэн үндсэн ассемблер хэл рүү хөрвүүлэгдэж байгааг зурган дээр үзүүлэв. Дараа нь үндсэн ассемблер код машин код руу хөрвүүлэгдэнэ. [www.cdeq.mn/hw200]
  • 8. Регистер дэх түр зуурын утга  Ихэнх ассемблер програмууд нь дээд түвшний програмчлалын хэлний адил subroutine-н цуглуулга байдаг.  Subroutine нь дотоод хувьсагчдыг (local variables) ашиглах ба эдгээр хувьсагчид нь зөвхөн subroutine-д өөрт нь ашиглагдана. Түр зуурын регистрүүд болон $t0-$t7,$t8, ба $t9 мөн хадгалагдсан регистрүүд болох $s0-$s7 нь дотоод хувьсагчдад ашиглагдана. [www.cdeq.mn/hw200]
  • 9. Регистер дэх түр зуурын утга  Програм бичих явцад түр зуурын болон хадгалагдсан регистрүүдийг хэдийд ч ашиглах боломжтой байдаг. Харин subroutine дуудах үед түр зуурын регистрүүд өөрчлөгдөж болзошгүй. Хадгалагдсан регистрүүдийн хувьд ямар ч subroutine дуудалтын үед утгаа өөрчлөхгүй. Жишээ програмыг үзүүлэв: [www.cdeq.mn/hw200]
  • 10. Регистер дэх түр зуурын утга  ori $t0,$0,32 # load 32 into a temp register  ori $s0,$0,13 # load 13 into a saved register  jal subrout # subroutine call (don't worry about # the details of this, now).  sll $0,$0,0 # delay slot  back: addu $s0,$s0,$t0 # return from subroutine;  # temp register $t0 may have changed.  # saved register $s0 has not changed. [www.cdeq.mn/hw200]
  • 11. Регистер дэх түр зуурын утга  back дээрх илэрхийлэл нь алдаатай илэрхийлэл юм. Энэ тохиолдолд түр зуурын регистр $t0 нь subrout нэртэй subroutine дуудалтаар өөрчлөгдөж болзошгүй юм. [www.cdeq.mn/hw200]
  • 12. Бусад регистрүүд  Регистрүүд нь хувьсагчид болон аргументуудад, мөн бусад зориулалтаар ашиглагдах хэлбэрээрээ групп болж хуваагсдан байдаг.($0, $v0-$v1, $a0-$a3, $t0-$t9, $s0-$s7).  Үйлдлийн системийн хамгийн тулгуур хэсэг нь kernel байдаг. Үйлдлийн системийн бусад хэсгүүд нь kernel-ийн функцуудаар биелэгддэг. $k0 ба $k1 регистрүүд нь kernel-д зориулагдан нөөцлөгдсөн байдаг. Хэрэглээний програмууд эдгээрийг оролдох шаадлагагүй юм.  SPIM нь үйлдлийн системтэй цуг ирдэггүй боловч хэрэв хүсэлт гарвал $k0 ба $k1 ийн ашиглагдаг trap handler-г ачаалдаг.  Регистр $gp, $sp, ба $fp ууд нь үндсэн регистр хэлбэрээр ашиглагдаж санах ойн хэсгүүд рүү хандалт хийдэг. [www.cdeq.mn/hw200]
  • 13. Псевдо командууд  addu команд нь бит төлөвийг регистрүүдийн хооронд хуулна. Үүнийг ихэвчлэн move буюу шилжүүлэх үйлдэл гэж нэрлэдэг бөгөөд энэ үйлдэл нь эх регистрийн утга өөрчилдөггүй.  Псевдо команд нь нэг болон түүнээс олон үндсэн ассемблер командын оронд хэрэглэгдэх өргөтгөсөн ассемблерийн команд юм. [www.cdeq.mn/hw200]
  • 14. Псевдо командууд  Өргөтгөсөн ассемблер нь хэд хэдэн псевдо команд хэрэгжүүлдэг. move псевдо командын жишээ: move d,s # эх регистр s-н утгыг зорьсон регистр d-д шилжүүлнэ.  d ба s регистрүүд mnemonic нэрээр тодорхойлогдож болно( $t5 эсвэл $zero г.м). Эсвэл регистрийн дугаараар тодорхойлогдоно( $13 эсвэл $0). [www.cdeq.mn/hw200]
  • 15. “Дамжуулах Илэрхийлэлquot;  move команд нь дээд түвшний хэлэн дэх дамжуулах илэрхийлэлтэй адил уншигдана: j = val; val –н утгыг j хувьсагчид хуулна. move $s1,$t3  $t3-ын утгыг регистр $s1 руу хуулна. [www.cdeq.mn/hw200]
  • 16. Шуурхай ачаалах  Дээр үзүүлсэн ori команд нь бит төлөвийг командаас регистр рүү хуулна. (16 битийн тэг өргөтгөлтэй шуурхай операндыг 32 бит рүү дуудна.) Энэ үйлдлийг ихэвчлэн шуурхай ачаалах үйлдэл гэж нэрлэдэг. Энэ нь шуурхай боломжтой утга агуулсан регистрийг ачаалдаг. (санах ой руу зөөлгүйгээр)  Энэ үйлдлийн ассемблер хэл дэх mnemonic нэр нь li юм. Ассемблер энэ псевдо командыг тохирох үндсэн команд руу хөрвүүлдэг li d,value # Регистр $d-г value утгатай ачаална (Утга нь 16 эсвэл 32 бит байж болно) [www.cdeq.mn/hw200]
  • 17. Хэд хэдэн хөрвүүлэлт  Шуурхай ачаалах псевдо команд нь бүхэл тоон утгатай регистрийг ачаалахад хэрэглэгддэг.Өөр нэг жишээ:  li $t2,-156 Дээрх команд нь -15610 -ийн 2-тын гүйцээлтийг регистр $t2 руу оруулна. Энэ үйлдлийг ori командаар хийж болох боловч тухайн командын шуурхай талбар нь 16 битийн тэгээс их бүхэл тоо байх учиртай юм. li-ийн шуурхай утга нь хасах ба ялгаатай хөрвүүлэлтийг ашиглана: [www.cdeq.mn/hw200]
  • 18. Хэд хэдэн хөрвүүлэлт  li $v2,-156 == addiu $v2,$0,-156 (addiu команд нь нэмэгдэхүүний үйлдэл хийхээс өмнө шуурхай операндаа тэмдэгтэн өргөтгөл хийнэ. addiu команд нь хасах утгатай бүхэл тоотой хамт ашиглагдаж болно. Өргөтгөсөн ассемлбер нь li командыг шуурхай утгын тэмдэгээс хамаарч ялгаатай үндсэн команд руу хөрвүүлнэ. [www.cdeq.mn/hw200]
  • 19. Хоёр үндсэн команд  Шуурхай операндууд нь үргэлж 16 бит хэмжээтэй байна. Хоёр машин командуудыг 32 битийн регистрийг 32 битийн бүхэл тоотой ачаалах боломжтой:  li $v2,0x12345678 == lui $v2,0x1234 ori $v2,$v2,0x5678 [www.cdeq.mn/hw200]
  • 20. Хоёр үндсэн команд  Энд li нь хоёр үндсэн команд руу хөрвүүлэгдсэн байна. Эхнийх нь $v2-ийн дээд хагас (top half)-г ачаална. Хоёр дах нь ori үйлдэл ашиглан доод хагасыг (bottom half) ачаална. Үүнийг нэмэх, хасах дурын бүхэл тооны хувьд хийж болно: [www.cdeq.mn/hw200]
  • 21. Хоёр үндсэн команд  li d,value # Регистр $d-г нэмэх эсвэл хасах утга quot;value“-тай ачаална. Утга нь 32 бит хүртэл дурын бүхэл тоо байна.  Өргөтгөсөн ассемблер нь автоматаар энэхүү псевдокомандыг бодит командын хамгийн ашигтай дараалал руу хөрвүүлнэ. [www.cdeq.mn/hw200]
  • 22. Жишээ програм  Шуурхай ачаалах үйлдлийг ашигласан жишээ програмыг үзүүллээ. [www.cdeq.mn/hw200]
  • 23. Жишээ програм  ## liEg.asm  ##  .text  .globl main  main: li $t0,43 # first value  li $t1,-96 # second value  li $t7,-16772555 # third value  addu $t0,$t0,$t1 # add the values  addu $t0,$t0,$t7 # leave result in $t0  ## end of liEg.asm [www.cdeq.mn/hw200]
  • 24. Жишээ програм  li команд бүр ялгаатай үндсэн командууд руу хөрвүүлэгдэнэ. SPIM дээр програмыг ажиллуулахад эхлээд settings цэсийг харна. quot;allow pseudo instructionsquot; хэсгийг чагтлаад quot;bare machine“ хэсгээс чагтыг авна. [www.cdeq.mn/hw200]