Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A3.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
755 Кб
Скачать
☆

Inna trudność związana z procedurami w mips jest powodowana przez konieczność umieszczania na stosie zarówno liczb jak I bardziej złożonych struktur danych, na przykład ciągów liczbowych.

Alokacja ramy procedury na stosie oraz wskaźnik ramy i stosu,

przed wywołaniem procedury i w trakcie jej wykonywania

Tą trudność rozwiązuje się przez utworzenie na stosie segmentu o nazwie rama procedury ('procedure frame') i wskaźnika do ramy ($fp). Procedury mogą być zagnieżdżone jedna w drugiej.

Podsumowanie dotychczasowych informacji o zbiorze instrukcji MIPS

właściwość

przykłady

komentarze

32 rejestry

$s0, $s1, ...$s7

$t0, $t1,..., $t7

$zero

Szybka pamięć danych, przed wykonaniem operacji arytmetycznych dane muszą się znaleźć w rejestrach. Odwzorowanie nazw rejestrów na numery $s0, $s1, ...$s716 - 23, $t0, $t1,..., $t78 - 15, rejestr $zero0, program asembler interpretuje rejestr jako instrukcję move

230 słów pamięci

memory[0]

memory[4] ....

memory[4]4294967292

Dostęp jedynie za pomocą instrukcji transferu danych. Sąsiednie sekwencyjnie adresy różnią się o 4. Pamięć przechowuje liczby, struktury, szeregi, rejestry zawierające rzadko używane zmienne nazywają się ' spilled '

Operandy mips

kategoria

instrukcja

przykład użycia

znaczenie

komentarze

arytmetyczne

add

add $s1,$s2,$s3

$s1=$s2+$s3

trzy operandy

subtract

sub $s1,$s2,$s3

$s1=$s2-$s3

trzy operandy

transferu danych

load word

lw $s1,100($s2)

$s1=Memory[$s2+100]

dane memoryrejestr

save word

sw $s1,100($s2)

Memory[$s2+100]=$s1

dane rejestrmemory

logiczne

AND

and $s1,$s2,$s3

$s1=$s2&$s3

trzy operandy, bitowe AND

OR

or $s1,$s2,$s3

$s1=$s2|$s3

trzy operandy, bitowe OR

NOR

nor $s1,$s2,$s3

$s1=~($s2|$s3)

trzy operandy, bitowe NOR

AND immediate

andi $s1,$s2,100

$s1=$s2&100

bitowe AND z stałą

OR immediate

ori $s1,$s2,100

$s1=$s2|100

bitowe OR z stałą

shift left logical

sll $s1,$s2,10

$s1=$s2<<10

przesunięcie w lewo o stałą

shift right logical

srl $s1,$s2,10

$s1=$s2>>10

przesunięcie w prawo o stałą

rozgałęzienie

warunkowe

(branch)

(set)

on equal

beq$s1,$s2,L

if($s1==$s2) go to L

test równości i rozgałęzienie

on not equal

bne$s1,$s2,L

if($s1!=$s2) go to L

test nierówności i rozgałęzienie

on less than

slt $s1,$s2,$s3

if($s2<$s3) $s1 else $s1=0

używane razem z beq lub bne

on less than immediate

slt $s1,$s2,100

if($s2<100) $s1 else $s1=0

używane razem z beq lub bne

skok

bezwarunkowy

jump

j L

go to L

skok do adresu etykiety L

jump register

jr $ra

go to $ra

skok do procedury powrotu

jump and link

jal L

$ra = PC + 4; go to L

używany do wywołania procedury

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]