| 86 |
|
|
| 87 |
\vmachine\ jest głównym modułem projektu \SmArc. Jest to uproszczony |
\vmachine\ jest głównym modułem projektu \SmArc. Jest to uproszczony |
| 88 |
model procesora \SPARC\ o klasycznej strukturze potoku 5-stopniowego. |
model procesora \SPARC\ o klasycznej strukturze potoku 5-stopniowego. |
| 89 |
Symuluje wykonywanie programów z~dokładnością do mikrooperacji |
Symuluje działanie programów z~dokładnością do mikrooperacji |
| 90 |
wykonywanych w jednym cyklu zegara. \vmachine\ umożliwia zaobserwować |
wykonywanych w jednym cyklu zegara. \vmachine\ umożliwia zaobserwować |
| 91 |
przepływ danych we wewnętrznych rejestrach procesora, w szczególności |
przepływ danych we wewnętrznych rejestrach procesora, w szczególności |
| 92 |
sytuacje przestoju potoku ({\it stall}) oraz wyprzedzenia argumentów |
sytuacje przestoju potoku ({\it stall}) oraz wyprzedzenia argumentów |
| 147 |
\label{sec:elementy:despasm} |
\label{sec:elementy:despasm} |
| 148 |
|
|
| 149 |
Program \despasm\ to prosty deasembler kodu binarnego wygenerowanego |
Program \despasm\ to prosty deasembler kodu binarnego wygenerowanego |
| 150 |
za pomocą asemblera \spasm. \despasm\ jest domyślnie wywoływany |
za pomocą asemblera \spasm. Domyślnie jest wywoływany bezpośrednio |
| 151 |
bezpośrednio z interfejsu graficznego \smarcgui. Jest jednak |
z interfejsu graficznego \smarcgui. Możliwe jest jednak jego ręczne |
| 152 |
możliwe jego ręczne wywołanie: |
wywołanie: |
| 153 |
|
|
| 154 |
\begin{verbatim} |
\begin{verbatim} |
| 155 |
despasm [-b] [-n] <prog> |
despasm [-b] [-n] <prog> |
| 196 |
\item przewijanej listy wyświetlającej wykonywany program. Aktualnie |
\item przewijanej listy wyświetlającej wykonywany program. Aktualnie |
| 197 |
wykonywane instrukcje zostały odpowiednio zaznaczone kolorem. |
wykonywane instrukcje zostały odpowiednio zaznaczone kolorem. |
| 198 |
Pojawienie się przestoju potoku {\it stall} w danej fazie jest |
Pojawienie się przestoju potoku {\it stall} w danej fazie jest |
| 199 |
zaznaczone {\bf '!'} przed jej skrótem. Jest możliwe, że jedna |
zaznaczone {\bf '!'} przed jej skrótem. Możliwe jest, że jedna |
| 200 |
instrukcja jest przetwarzana przez większą ilość faz. |
instrukcja jest przetwarzana przez większą ilość faz. |
| 201 |
\item grupy pól tekstowych wyświetlających wartości wewnętrzny rejestrów |
\item grupy pól tekstowych wyświetlających wartości wewnętrzny rejestrów |
| 202 |
procesora. |
procesora. |
| 355 |
\item separacja pamięć na dane i instrukcje (Harward). |
\item separacja pamięć na dane i instrukcje (Harward). |
| 356 |
Obie posiadają osobne przestrzenie adresowe. Pamięć instrukcji |
Obie posiadają osobne przestrzenie adresowe. Pamięć instrukcji |
| 357 |
jest tylko do odczytu (poprzez rejestr {\bf PC}), natomiast |
jest tylko do odczytu (poprzez rejestr {\bf PC}), natomiast |
| 358 |
dostęp danych jest poprzez instrukcje typu {\it load} |
dostęp do danych jest poprzez instrukcje typu {\it load} |
| 359 |
i {\it store}. |
i {\it store}. |
| 360 |
\item odwołania do pamięci są zawsze trafione (nie obserwujemy procesu |
\item odwołania do pamięci są zawsze trafione (nie obserwujemy procesu |
| 361 |
zapełniania pamięci cache i związanym z tym wstrzymaniem potoku) |
zapełniania pamięci cache i związanym z tym wstrzymaniem potoku) |
| 568 |
|
|
| 569 |
\begin{center} |
\begin{center} |
| 570 |
\begin{tabular}{l|p{2cm}|p{3cm}|p{8cm}} |
\begin{tabular}{l|p{2cm}|p{3cm}|p{8cm}} |
| 571 |
{\bf Pole} & {\bf Długość}&{\bf Typ} &{\bf Zawartość} \\\hline |
{\bf Pole} & {\bf Długość}&{\bf Typ} &{\bf Zawartość} \vspace{1mm}\\\hline |
| 572 |
{\tt NAGŁÓWEK} & 4 bajty & |
{\tt NAGŁÓWEK} & 4 bajty & |
| 573 |
ciąg ASCII & stały ciąg '{\tt SMARC}' identyfikujący plik wykonywalny \\ |
ciąg ASCII & stały ciąg '{\tt SMARC}' identyfikujący plik wykonywalny \vspace{1mm}\\ |
| 574 |
{\tt WERSJA} & 1 bajt & |
{\tt WERSJA} & 1 bajt & |
| 575 |
cyfra 0-9 w kodzie ASCII & numer wersji pliku wykonywalnego |
cyfra 0-9 w kodzie ASCII & numer wersji pliku wykonywalnego |
| 576 |
(obecnie jedyna obsługiwana wersja to '0') \\ |
(obecnie jedyna obsługiwana wersja to '0') \vspace{1mm}\\ |
| 577 |
{\tt ID\_DANYCH} & 4 bajty & |
{\tt ID\_DANYCH} & 4 bajty & |
| 578 |
ciąg ASCII & stały ciąg '{\tt DATA}' zapowiadający sekcję danych \\ |
ciąg ASCII & stały ciąg '{\tt DATA}' zapowiadający sekcję danych \vspace{1mm}\\ |
| 579 |
{\tt DL\_DANYCH} & 4 bajty & |
{\tt DL\_DANYCH} & 4 bajty & |
| 580 |
słowo 32-bitowe (big-endian) & zawiera długość bloku danych (w bajtach) |
słowo 32-bitowe (big-endian) & zawiera długość bloku danych (w bajtach) |
| 581 |
wyrównanego do granicy słowa 32-bitowego \\ |
wyrównanego do granicy słowa 32-bitowego \vspace{1mm}\\ |
| 582 |
{\tt DANE} & {\tt DL\_DANYCH} bajtów & |
{\tt DANE} & {\tt DL\_DANYCH} bajtów & |
| 583 |
sekcja danych & \\ |
sekcja danych & \vspace{1mm}\\ |
| 584 |
{\tt ID\_KODU} & 5 bajtów & |
{\tt ID\_KODU} & 5 bajtów & |
| 585 |
ciąg ASCII & stały ciąg '{\tt INSTR}' zapowiadający sekcję kodu \\ |
ciąg ASCII & stały ciąg '{\tt INSTR}' zapowiadający sekcję kodu\vspace{1mm}\\ |
| 586 |
{\tt DL\_KODU} & 4 bajty & |
{\tt DL\_KODU} & 4 bajty & |
| 587 |
słowo 32-bitowe (big-endian)& zawiera długość bloku kodu (w bajtach) \\ |
słowo 32-bitowe (big-endian)& zawiera długość bloku kodu (w bajtach)\vspace{1mm}\\ |
| 588 |
{\tt KOD} & {\tt DL\_KODU} bajtów & |
{\tt KOD} & {\tt DL\_KODU} bajtów & sekcja kodu & \vspace{1mm} |
|
sekcja kodu & \\ |
|
| 589 |
\end{tabular} |
\end{tabular} |
| 590 |
\end{center} |
\end{center} |
| 591 |
|
|