- •III Procesor główny
- •Schemat przepływu danych w cpu
- •Najprostszy system połączeń
- •Numery, wartości I adresy kolejnych wyrazów szeregu
- •Instrukcją komplementarną do load jest instrukcja store, której nazwa w mips jest sw (store word). Służy do zapisywania danych w pamięci, a jej format jest taki sam jak instrukcji lw.
- •Potok (strumień) (ang. Flowchart) czynności, które powinna wykonać instrukcja
- •Instrukcja iteracji
- •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.
- •Operandy mips
- •Instrukcje języka asembler
- •Schemat ilustrujący realizację zbioru instrukcji mips
- •Poprzedni schemat uzupełniony o niektóre linie I urządzenia systemu sterowania
- •1.Nieznana instrukcja lub przepełnienie
- •Składniki komputera zawierające informację o stanie komputera
- •2.Żądanie pobrania informacji z I/o
- •Czasy w pikosekundach (10-9s) trwania każdego z etapów wybranych instrukcji
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, ...$s716 - 23, $t0, $t1,..., $t78 - 15, rejestr $zero0, 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 memoryrejestr |
save word |
sw $s1,100($s2) |
Memory[$s2+100]=$s1 |
dane rejestrmemory |
|
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 |
