Architektura komputerów - Wprowadzenie do architektury komputerów
1. Narzędzia programistyczne x86:
6. Rejestry procesora to niewielkich rozmiarów komórki pamięci umieszczone wewnątrz procesora służące do tymczasowego przechowania wyników obliczeń, adresów lokacji w pamięci operacyjnej itp.
- TASM (Turbo Assembler) - pakiet, w którego skład wchodzi asembler, linker oraz debugger
- NASM (Netwide Assembler) - darmowy kompilator. Program zawarty jest w jednym pliku wykonywalnym, za pomocą którego można skompilować program do jednego z kilku oferowanych formatów.
- MASM (Macro Assembler) - narzędzie do pisania niskopoziomowych programów dla systemu Windows
- FASM (Flat Assembler) - darmowy kompilator m.in. dla systemów Windows, Linux, DOS
2. TASM:
- tasm.exe -> program służy do analizy programu źródłowego pod kątem poprawności ze składnią języka (asemblacji). Jeśli jest on napisany poprawnie to pojawi się plik o takiej samej nazwie jak plik źródłowy o rozszerzeniu .obj. W przeciwnym przypadku pojawi się odpowiedni komunikat o błędzie. tasm plik.asm
- tlink.exe -> program służy do utworzenia wersji uruchamialnej programu na podstawie pliku obiektowego obj (konsolidacja). Utworzy się wtedy plik o rozszerzeniu .exe. tlink plik1.obj
- td.exe -> programu się używa, gdy udało się utworzyć program uruchamialny, ale nie działa on poprawnie (debugger). Z jego poziomu możemy sprawdzać krok po kroku jak działa program (ze szczegółami). td plik1.exe
Aby plik .exe mógł być uruchomiony z programem td.exe należy dołączyć do niego dodatkowe informacje
tasm /zi plik1.asm
tlink /v plik1.obj
Odpowiednie opcje (/zi oraz /v) programów tasm.exe i tlink.exe pozwolą na dodanie do pliku
wynikowego *.exe tych informacji, których potrzebuje program td.exe
3. FASM ma zintegrowane dwa programy, ale musimy się dodatkowo zaopatrzyć w debugger (np. ollydbg)
4. Architektura procesora Intel 8086 w trybie rzeczywistym (REAL):
Wyróżnia się dwie jednostki funkcjonalne:
- jednostka wykonawcza (EU) - tutaj realizowane są operacje przetwarzania danych
- jednostka współpracy z magistralą (interfejsowa) (BIU) - odpowiedzialna jest za wystawianie na zewnątrz procesora adresów fizycznych, po wcześniejszym przetworzeniu adresów logicznych zgodnie z algorytmem określonym przez segmentację pamięci
Dla procesorów rodziny x86, szesnaście starszych bitów adresu bazowego segmentu znajduje się na jednym z czterech rejestrów segmentowych, podczas gdy cztery najmłodsze bity są równe zeru. W związku z tym, adres bazowy w segmencie jest reprezentowany przez liczbę 16-bitową, segment posiada stałą długość równą 2^16 = 64 kB. Procesory te w trybie rzeczywistym zawierają 4 rejestry segmentowe (można wykorzystać 4 segmenty jednocześnie):
- segment programu (rejestr CS)
- segment stosu (rejestr SS)
- segmenty danych (rejestry DS, ES)
5. Schemat segmentacji pamięci w Intel 8086:
6. Rejestry procesora to niewielkich rozmiarów komórki pamięci umieszczone wewnątrz procesora służące do tymczasowego przechowania wyników obliczeń, adresów lokacji w pamięci operacyjnej itp.
Rejestry zaczynające się od E są rejestrami 32-bitowymi, natomiast te bez literki E są 16-bitowe:
- (E)AX - rejestr wykorzystywany tylko do operacji w operacjach arytmetycznych i logicznych
- (E)BX - rejestr adresowy danych
- (E)CX - rejestr licznikowy dla rozkazów pętli iteracyjnych
- (E)BP - rejestr adresowy układów wejścia-wyjścia
- (E)SP - wskaźnik stosu
- (E)SI, E(DI) - rejestry indeksowe
- (E)IP - wskaźnik rozkazu (wskazuje adres rozkazu wykonywany w następnym cyklu rozkazowym)
7. Rejestr segmentowy to rejestr procesora, który służy do przechowywania adresu początkowego adresu pamięci, w którym umieszczane są rozkazy, dane albo stos programów. Wyróżniamy następujące rejestry segmentowe:
- CS - pobieranie rozkazu
- SS - operacje na stosie
- DS - odczyt/zapis danych oraz operacje na łańcuchach (źródło danych)
- ES - operacje na łańcuchach (przeznaczenie danych)
- SS - adresowanie bazowe rejestrem BP
8. Rejestr flagowy (rejestr stanu) to rejestr procesora opisujący i kontrolujący jego stan. Jego zawartość zależy do ostatnio wykonanej operacji lub od trybu pracy procesora. Struktura rejestru flagowego:
- bity warunków - są ustawiane przez jednostkę arytmetyczno-logiczną (ALU) po każdej operacji arytmetycznej lub logicznej; są podstawą do wykonywania rozkazów skoków warunkowych
- bity stanu - są ustawiane programowo; określają sposób pracy procesora
Bity warunków:
- C - flaga przeniesienia (wskazuje, że wynik operacji zawiera się w większej niż dostępna liczbie bitów)
- O - flaga przepełnienia (wskazuje, czy wynik operacji powoduje przepełnienie reprezentacji słowa procesora; flaga podobna do flagi przeniesienia, jednak odnosi się do operacji ze znakiem)
- Z - flaga zera (wskazuje, że wynikiem operacji arytmetycznej bądź logicznej było zero)
- S - flaga znaku (wskazuje, że wynik operacji arytmetycznej był ujemny)
- P - flaga parzystości (wskazuje parzystość liczby ustawionych bitów wyniku)
- A - flaga przeniesienia pomocniczego (wykorzystywana podczas operacji na liczbach dziesiętnych w kodzie BCD)
Bity stanu:
- D - flaga kierunku (wskazuje kierunek operacji na blokach pamięci)
- I - flaga maskowania przerwań (ustawienie lub wyczyszczenie flagi umożliwia włączenie bądź wyłączenie przerwań)
- T - flaga pracy krokowej (jeśli T=0 to po wykonaniu każdego rozkazu generowany jest wyjątek)