65
Комментарий:
|
29876
|
Удаления помечены так. | Добавления помечены так. |
Строка 2: | Строка 2: |
[[https://moodle.cs.msu.ru/mod/lesson/edit.php?id=1876|Базовая лекция на Moodle]] | |
Строка 3: | Строка 4: |
'''TODO''' | ||<tablestyle="border: none; border-collapse: collapse;"rowstyle="height: 0px;"style="vertical-align: top; padding: 0px 7px 0px 7px; border: solid #000000 2px;">Регистр ||<style="vertical-align: top; padding: 0px 7px 0px 7px; border: solid #000000 2px;">Программное имя ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">Регистр ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">Программное имя || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">r0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">zero ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r16 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s0 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">at ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r17 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s1 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r2 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">v0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r18 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s2 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r3 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">v1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r19 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s3 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r4 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r20 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s4 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r5 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r21 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s5 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;"> r6 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a2 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r22 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s6 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r7 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a3 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r23 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s7 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r8 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r24 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t8 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r9 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r25 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t9 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r10 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t2 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r26 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">k0 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r11 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t3 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r27 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">k1 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r12 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t4 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r28 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">gp || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r13 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t5 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r29 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">sp || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r14 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t6 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r30 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s8, fp || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r15 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t7 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r31 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">ra || * Только два регистра особенные — '''zero''' ('''r0, '''всегда равен 0) и '''ra''' ('''r31''', автоматически заполняется некоторыми командами) * Теоретически можно использовать любой, но это ''сильно'' затрудняет написание работающих программ * ⇒ возникает понятие ''конвенции'' (договорённости) * Регистр '''at (r1)''' используется псевдоинструкциями (например, для адреса при косвенной адресации) * Регистры '''a0 - a3 (r4 - r7) '''используются для передачи параметров подпрограммам * Очевидно, у подпрограмм может быть более 4 параметров, так что здесь тоже вступают в силу конвенции, и очень разнообразные * Регистры '''v0, v1 (r2, r3)''' используются для возврата значений (почему два?) * Регистры '''t0 - t9 (r8-r15, r24,r25) '''можно использовать без ограничений * Регистры''' s0 - s8 (r16 - r23, r30) '''по договорённости необходимо восстанавливать в исходные значения перед выходом из подпрограммы. При этом даже если они используются вне подпрограммы, код сохранения и восстановления обязан присутствовать. * Регистры '''k0, k1 (r26, r27)''' используются для взаимодействия с ядром * Регистр '''sp (r29)''' содержит ссылку на вершину ''стека ''(stack pointer) * Регистр '''gp (r28)''' хранит адрес области глобальных данных (global pointer). Нужен, например, для хранения «глобальных переменных», доступных в том числе и из подпрограмм (конвенция!), или для передачи данных со стороны операционной системы * Регистр '''s8 (r30) '''''в некоторых конвенциях'' организации подпрограмм используется для хранения ссылки на область данных текущей подпрограммы, поэтому он носит ещё одно название — '''fp ''' (frame pointer) Ещё два регистра — '''HI''' и '''LO''' — используются в командах деления и умножения. ||<tablestyle="border: none; border-collapse: collapse;"rowstyle="height: 0px;"style="vertical-align: top; padding: 0px 7px 0px 7px; border: solid #000000 2px;">Регистр ||<style="vertical-align: top; padding: 0px 7px 0px 7px; border: solid #000000 2px;">Программное имя ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">Регистр ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">Программное имя || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">r0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 2px; vertical-align: top; padding: 0px 7px 0px 7px;">zero ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r16 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s0 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">at ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r17 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s1 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r2 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">v0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r18 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s2 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r3 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">v1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r19 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s3 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r4 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r20 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s4 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r5 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r21 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s5 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;"> r6 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a2 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r22 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s6 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r7 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">a3 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r23 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s7 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r8 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t0 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r24 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t8 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r9 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t1 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r25 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t9 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r10 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t2 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r26 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">k0 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r11 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t3 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r27 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">k1 || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r12 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t4 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r28 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">gp || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r13 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t5 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r29 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">sp || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r14 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t6 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r30 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 1px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">s8, fp || ||<rowstyle="height: 0px;"style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r15 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">t7 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">r31 ||<style="border-left: solid #000000 2px; border-right: solid #000000 2px; border-bottom: solid #000000 2px; border-top: solid #000000 1px; vertical-align: top; padding: 0px 7px 0px 7px;">ra || |
Регистры и модель памяти
Регистр |
Программное имя |
Регистр |
Программное имя |
r0 |
zero |
r16 |
s0 |
r1 |
at |
r17 |
s1 |
r2 |
v0 |
r18 |
s2 |
r3 |
v1 |
r19 |
s3 |
r4 |
a0 |
r20 |
s4 |
r5 |
a1 |
r21 |
s5 |
r6 |
a2 |
r22 |
s6 |
r7 |
a3 |
r23 |
s7 |
r8 |
t0 |
r24 |
t8 |
r9 |
t1 |
r25 |
t9 |
r10 |
t2 |
r26 |
k0 |
r11 |
t3 |
r27 |
k1 |
r12 |
t4 |
r28 |
gp |
r13 |
t5 |
r29 |
sp |
r14 |
t6 |
r30 |
s8, fp |
r15 |
t7 |
r31 |
ra |
Только два регистра особенные — zero (r0, всегда равен 0) и ra (r31, автоматически заполняется некоторыми командами)
Теоретически можно использовать любой, но это сильно затрудняет написание работающих программ
⇒ возникает понятие конвенции (договорённости)
Регистр at (r1) используется псевдоинструкциями (например, для адреса при косвенной адресации)
Регистры a0 - a3 (r4 - r7) используются для передачи параметров подпрограммам
- Очевидно, у подпрограмм может быть более 4 параметров, так что здесь тоже вступают в силу конвенции, и очень разнообразные
Регистры v0, v1 (r2, r3) используются для возврата значений (почему два?)
Регистры t0 - t9 (r8-r15, r24,r25) можно использовать без ограничений
Регистры s0 - s8 (r16 - r23, r30) по договорённости необходимо восстанавливать в исходные значения перед выходом из подпрограммы. При этом даже если они используются вне подпрограммы, код сохранения и восстановления обязан присутствовать.
Регистры k0, k1 (r26, r27) используются для взаимодействия с ядром
Регистр sp (r29) содержит ссылку на вершину стека (stack pointer)
Регистр gp (r28) хранит адрес области глобальных данных (global pointer). Нужен, например, для хранения «глобальных переменных», доступных в том числе и из подпрограмм (конвенция!), или для передачи данных со стороны операционной системы
Регистр s8 (r30) в некоторых конвенциях организации подпрограмм используется для хранения ссылки на область данных текущей подпрограммы, поэтому он носит ещё одно название — fp (frame pointer)
Ещё два регистра — HI и LO — используются в командах деления и умножения.
Регистр |
Программное имя |
Регистр |
Программное имя |
r0 |
zero |
r16 |
s0 |
r1 |
at |
r17 |
s1 |
r2 |
v0 |
r18 |
s2 |
r3 |
v1 |
r19 |
s3 |
r4 |
a0 |
r20 |
s4 |
r5 |
a1 |
r21 |
s5 |
r6 |
a2 |
r22 |
s6 |
r7 |
a3 |
r23 |
s7 |
r8 |
t0 |
r24 |
t8 |
r9 |
t1 |
r25 |
t9 |
r10 |
t2 |
r26 |
k0 |
r11 |
t3 |
r27 |
k1 |
r12 |
t4 |
r28 |
gp |
r13 |
t5 |
r29 |
sp |
r14 |
t6 |
r30 |
s8, fp |
r15 |
t7 |
r31 |
ra |