Powrót

Komputer na układach TTL, czyli znów wszystko na jedną kartę…

Artykuł przybliża ogólną budowę instrukcji procesora KYRON w niskopoziomowym języku programowania. Z tej części można się dowiedzieć o ich formacie i specyfice związanej z funkcjonalnością oraz z pewnym wymyślonym przeze mnie standardzie, na którym się opierają.

Charakterystyka typów instrukcji

Wszystkie zaprojektowane przeze mnie instrukcje na ten procesor składają się z mnemonika oraz z operandów. Liczba operandów dla danego typu instrukcji może się wahać od zera do czterech.

Operandami dla standardowych 32-bitowych instrukcji stałoprzecinkowych mogą być:

Rejestry dostępne dla programisty z puli przydzielonej dla tych instrukcji:

(A0A7, D0D7, SPU, SPS, F, CS, DS, SS, ES).

Bezpośrednie odwołania do pamięci operacyjnej.

Dana natychmiastowa.

Rysunek 1 przedstawia wszystkie możliwe zaimplementowane kombinacje dla instrukcji z jednym operandem.

Rysunek 1

Natomiast rysunek 2 dla instrukcji z dwoma operandami.

Rysunek 2

Rysunek 3 prezentuje kombinacje dla instrukcji z trzema operandami.

Rysunek 3

Rysunek 4 to kombinacje dla instrukcji z czterema operandami.

Rysunek 4

Określnik R oznacza dowolny rejestr z przydzielonej puli, określniki w nawiasach kwadratowych [ ] określają odwołania do pamięci operacyjnej, różnego rodzaju jej adresowania, którymi zajmiemy się dokładniej w kolejnym odcinku tego cyklu. Napomknę tylko, że:

Określnik [A] to 32-bitowa zmienna adresowa, wykorzystywana przy adresowaniu bezpośrednim.

Określnik [Ax] oznacza zawsze rejestr adresowy (A0A7, SPU, SPS). Rejestry te są wykorzystywane przy adresowaniu bezpośrednim rejestrowym.

Określnik Bx oznacza zawsze rejestr bazowy (A0A7, SPU, SPS). Natomiast określnik Ix oznacza zawsze rejestr indeksowy (A0A7). Często te określniki występują w różnych kombinacjach z 32 bitowym przesunięciem D. Te wszystkie kompilacje są wykorzystywane w adresowaniu bazowym z przesunięciem, bazowo indeksowym lub bazowo indeksowym z przesunięciem.

Określnik I to 32 bitowa dana natychmiastowa, jest ona używana w adresowaniu natychmiastowym.

Określnik [Sx: …] w kontekście obsługi pamięci operacyjnej oznacza stronicowanie pamięci z segmentacją. Właśnie określnik Sx określa wybrany segment, czyli aktywny rejestr segmentowy (CS, DS, SS, ES). Gdy w sformułowaniu w nawiasie kwadratowym nie występuje wyrażenie [Sx: …] tylko […] oznacza to, że kontekst obsługi pamięci RAM obsługuje tryb rzeczywisty lub tryb stronicowania pamięci.

Zaprezentowane na rysunkach 1–4 kombinacje operandów są wszystkimi możliwościami. Jednak nie każda instrukcja wykorzystuje je wszystkie. Zależy to od typu danej instrukcji i jej logiki działania. Przykładowo w instrukcjach arytmetycznych, takich jak ADD lub SUB, wykorzystywane są wszystkie kombinacje operandów. Lecz w instrukcji XCHG, która wymienia zawartość dwóch operandów – nie ma kompletnie sensu, aby jeden z operandów był daną natychmiastową. Dana natychmiastowa posiada zawsze niezmienną, przypisaną wartość ze względu na to, iż jest zintegrowana z instrukcją – nie można jej w żaden sposób modyfikować. To samo tyczy się instrukcji POP – nie można zdjąć danych ze stosu i zmodyfikować daną natychmiastową.

Warto też zwrócić uwagę, że dla instrukcji składających się z czterech operandów jest zastosowana tylko jedna kombinacja opierająca się tylko i wyłącznie na rejestrach. Tego typu instrukcje zazwyczaj służą do wykonywania operacji mnożenia lub dzielenia z resztą. Chodzi w tym przypadku o jak najszybsze wykonywanie się tego typu instrukcji, a największą prędkość wykonawczą uzyskuje się, gdy operujemy tylko i wyłącznie na rejestrach. Ta sama zasada dotyczy nawet najnowocześniejszych procesorów w naszych komputerach PC i nie tylko.

Operandami dla 64-bitowych instrukcji SIMD mogą być:

Rejestry dostępne dla programisty z puli przydzielonej dla tych instrukcji (MM0MM7).

Wszystkie 32-bitowe rejestry dostępne dla instrukcji stałoprzecinkowych

(A0A7, D0D7, SPU, SPS, CS, DS, SS, ES).

Bezpośrednie odwołania do pamięci operacyjnej.

Dana natychmiastowa.

Rysunek 5 przedstawia wszystkie możliwe zaimplementowane kombinacje dla instrukcji z dwoma operandami.

Rysunek 5

Natomiast Rysunek 6 dla instrukcji z czterema operandami.

Rysunek 6

(…)

——– ciach! ——–

To jest tylko fragment artykułu, którego pełna wersja ukazała się w numerze październikowym czasopisma Zrozumieć Elektronikę (ZE 10/2024). Pełną wersję czasopisma znajdziesz pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 10/2024 znajduje się tutaj.

Rafał Wiśniewski
rafi8112@interia.pl

 

Uwaga! Osoby, które nie są (jeszcze) stałymi Patronami ZE, mogą nabyć PDF-y z pełną wersję tego numeru oraz wszystkich innych numerów czasopisma wydanych od stycznia 2023, „stawiając kawę” (10 złotych za jeden numer czasopisma w postaci pliku PDF).
W tym celu należy kliknąć link (https://buycoffee.to/piotr-gorecki), lub poniższy obrazek
Postaw mi kawę na buycoffee.to
Następnie wybrać:
– jeśli jeden numer ZE – 10 zł,
– jeśli kilka numerów ZE – WSPIERAM ZA. I tu wpisać kwotę zależną od liczby zamawianych numerów – wydań (N x 10 zł),
Wpisać imię nazwisko.
Podać adres e-mail.
Koniecznie zaznaczyć: „Chcę dołączyć wiadomość dla Twórcy” i tu wpisać, który numer lub numery mamy wysłać na podany adres e-mailowy. Jeśli ma to być numer z tym artykułem trzeba zaznaczyć, że chodzi o ZE 10/2024.
UWAGA!!! E-mail z linkiem do materiałów (weTransfer) wysyłamy zazwyczaj w ciągu 24 godzin. Czasem zdarza się jednak, że trafia do spamu. Jeśli więc nie pojawi się w ciągu 48 godzin prosimy sprawdzić w folderze spam, a ewentualny problem zgłosić na adres: kontakt@piotr-gorecki.pl.