Wykład 2: Jak działa typowy mikroprocesor? Budowa procesora rodziny Intel80x86 Architektury CISC i RISC Instrukcje skoków warunkowych Stos Instrukcje operujące.

Slides:



Advertisements
Podobne prezentacje
Tryby adresowania Prawie każda operacja wykonywana przez mikroprocesor wykonywana jest na pewnych argumentach (lub argumencie). Sposoby wskazywania argumentów.
Advertisements

Architektura jednostki centralnej RD MBR MAR IRPC +1 WR jednostka sterująca ALU A F Adres Dane Rejestry: MAR – (Memory Address Register) rejestr adresowy.
Katarzyna Szafrańska kl. II ti
Wykład 6: Stałoprzecinkowe mikroprocesory sygnałowe: architektura
Wykonał : Marcin Sparniuk
Wykład 3: Jak działa typowy mikroprocesor?
Mikroprocesory i procesory sygnałowe
Idea, podstawowe parametry, cechy, charakterystyka
Technika mikroprocesorowa
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
CPU.
Lista rozkazów Działanie mikroprocesora jest kontrolowane poprzez rozkazy (instrukcje). Dla każdego typu mikroprocesora istnieje specyficzny zbiór rozkazów,
Architektura szynowa systemu mikroprocesorowego szyna danych szyna sterująca szyna adresowa µP szyna danych szyna adresowa D7,..., D1, D0 A15,..., A1,
Wykład 7: Zmiennoprzecinkowe mikroprocesory sygnałowe firmy Analog Devices: zastosowania i rodziny architektura podstawowe operacje ALU.
Wykład 2: Liczby rzeczywiste (stało i zmiennoprzecinkowe) Koprocesor
Procesor DSP Sharc ADSP21161 firmy Analog Devices
Mapa pamięci mikrokontrolera
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Podstawowe składniki funkcjonalne procesora i ich rola.
Alokacja pamięci struct Test {char c; int n; double x; } st1; st1 cnxcnx
ARCHITEKTURA KOMPUTERÓW definicja komputera PROCESOR PAMIĘĆ OPERACYJNA URZĄDZENIA ZEWNĘTRZNE.
Wprowadzenie do informatyki Wykład 5
Asembler i koncepcja von Neumanna
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Język asemblera i koncepcja von Neumanna
Asembler i koncepcja von Neumanna Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki Wykład 5
Wprowadzenie do informatyki Wykład 5
Architektura Systemów Komputerowych
Wykład 3: Adresowanie i jednostki obliczeniowe w ADSP 21161N
Procesory rodziny Intel
Temat nr 10: System przerwań
Wykład 2 struktura programu elementy języka typy zmienne
Mikroprocesory i procesory sygnałowe
Procesory RISC.
Typy wskaźnikowe, dynamiczne struktury danych
Podprogramy.
Mikroprocesory i mikrokontrolery
Architektura komputerów
przykładowy 8-bitowy mikroprocesor uniwersalny CISC
Mikrokontrolery PIC.
Budowa procesora rodziny x86
(Instruction Unit)dekoder
Programowanie w języku Matlab
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Architektura komputerów
Procedury i funkcje.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Architektura systemów komputerowych (jesień 2013)
Programowanie strukturalne i obiektowe
Architektura systemów komputerowych jesień 2013
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 10 typ zbiorowy rekurencja.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Procesor, pamięć, przerwania, WE/WY, …
Architektury procesorów rdzeniowych mikrokontrolerów.
Asembler i koncepcja von Neumanna Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki Wykład 5
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Architektura systemów komputerowych (jesień 2015) Wykład 5 Budowa i działanie komputera dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki.
WPROWADZENIE DO MIKROPROCESORÓW. Klasyfikacja mikroprocesorów SIMD – ang. Single Instruction Multiple Data SISD – ang. Single Instruction Single Data.
Tryby adresowania i formaty rozkazów mikroprocesora
POLITECHNIKA POZNAŃSKA
Opiekun: Stanisław Toton. 1. Co to jest mikroprocesor? 2. Początki mikroprocesora. 3. Budowa typowego mikroprocesora. 4. Rozwój mikroprocesorów na przełomie.
Organizacja i Architektura Komputerów
Wykład 3: Adresowanie i jednostki obliczeniowe w ADSP 21161N
Zapis prezentacji:

Wykład 2: Jak działa typowy mikroprocesor? Budowa procesora rodziny Intel80x86 Architektury CISC i RISC Instrukcje skoków warunkowych Stos Instrukcje operujące na ciągach danych Pętle

Język wysokiego poziomu: x:=1; for i:=1 to 10 do x:=x*2; Assembler: Mov [edx],$3f Mov [eax],$ Fragment kodu programu: kod maszynowy: C F C

Kodowanie instrukcji za pomocą bajtów:

Rys. Umiejscowienie logiczne mikroprocesora w systemie mikroprocesorowym

Przykładowe sygnały na pinach procesora.

Instrukcje wejścia/wyjścia (Input/Output):

Budowa mikroprocesora typu CISC Complete Instruction Set Computer

Budowa mikroprocesora typu RISC Reduced Instruction Set Computer

Podstawowe różnice pomiędzy CISC a RISC (Load Execution Store): CISC rozbudowane instrukcje operacje arytmetyczne bezpośrednio na lokalizacjach w pamięci możliwość zawansowanego programowania w języku maszynowym różna długość instrukcji często występujące instrukcje - 8 bitów rzadsze, rozbudowane instrukcje o większej długości znaczne różnice czasu wykonania poszczególnych instrukcji RISC znacznie ograniczony zestaw instrukcji operacje ALU tylko na rejestrach prosty tryb adresowania - uproszczone odwołania do pamięci wszystkie instrukcje identycznej długości (32 bity) znacznie prostsza konstrukcja procesora

Adresowanie pamięci w trybie rzeczywistym: rejestry segmentowe Przestrzeń adresowa wynosi 1MB ale w obrębie segmentu tylko 64kB

Adresowanie pamięci: tryby adresowania mov AX,1234h- natychmiastowy mov AX,[1234h] - bezpośredni mov EAX,DS:{CS,ES}[ESI] - pośredni DS – Data Segment (ES) CS – Code Segment mov EAX,[ECX+EBX*2{4,8}+stała] - pośredni skalowany z przemieszczeniem movs EAX,[ESI]- operacja łańcuchowa (ESI,EDI – wskaźnik źródła (Source) i przeznaczenia (Destination)

Przykłady: var tablica:array[0..100] of single; i:integer; y:single a)y:=tablica[10h] mov EAX,[tablica+40h] b)y:=tablica[i+10h] mov ebx,i lea ecx,tablica mov eax,[ecx+$10+ebx*4]

Wskaźnik rozkazów: IP (Instruction Pointer) PC (Program Counter):

Rejestr statusowy SR ( Status Register ) i instrukcje skoków warunkowych Instrukcje zmianiające stan znaczników (flag) CLC, CLD,CLI – kasujące STC, STD, STI - ustawiające

Rejestr statusowy cd. OF (bit 11) Overflow flag. This flag indicates an overflow condition for signed-integer (twos complement – U2) arithmetic. Set if the integer result is too large a positive number or too small a negative number (excluding the sign-bit) to fit in the destination operand; cleared otherwise. Przykłady wystąpienia przepełnienia: mov al,-128 sub al,1 //al=-129 !!! Przepełnienie mov al,127 add al,1 //al=128 !!! Przepełnienie

Instrukcje skoków warunkowych Dotyczące operacji arytmetycznych na liczbach bez znaku JB/JNAE(Below)CF=1 JNB/AE(Not Below)CF=0 JBE/JNA (Below Equal)CF=1 lub ZF=1 JNBE/JA (Not Below Not Equal)CF=0 i ZF=0 Dotyczące operacji arytmetycznych na liczbach ze znakiem U2 JL/NGE(Less)SF<>OF JGE/NL(Greater Equal) SF=OF JLE/NG(Less Equal)ZF=1 lub SF<>OF JG/NLE(Greater)ZF=0 i SF=OF Pozostałe JE/JZ(Equal)ZF=1 JNE/JNZ(Not Equal)ZF=0 JS(Sign)SF=1 JNS(Not Sign)SF=0

Instrukcje skoków warunkowych - przykład Sekwencja instrukcji w Pascal-u: var a,i:integer; //(32 bity) if i<10 then a:=i else a:=10; Przykład zapisu w assemblerze CMP dword ptr [i],$0a JGE WR //większe równe: pierwszy arument (lewa strona) względem drugiego (prawej strony) mov EAX,[i] mov [a],EAX JMP KONIEC WR:mov [a],$ a KONIEC:

Instrukcje skoków warunkowych - Przykład: liczby zmiennoprzecinkowe Sekwencja instrukcji w Pascal-u: var a:single; (32 bity) if a>10 then a:=10; Przykład zapisu w assemblerze: Sposób 2 (nowy) fld stala10 fld a //ST(0) fcomi st,st(1) jbe ET mov eax,[stala10] mov [a],eax ET:... Sposób 1 fld a fcomp stala10 fstsw ax sahf jbe ET mov eax,[stala10] mov [a],eax ET :...

Stos i podprogramy: (adres wierzchołka stosu = SS:SP) - Adres wierzchołka stosu = SS:ESP - Stos rośnie w dół - Przy operacjach odkładania na stos (PUSH) modyfikowany jest wskaźnik stosu a następnie zapisywana odpowiednia wartość - Zdejmowanie ze stosu (POP) w kolejności: -pobranie wartości z pamięci wskazywanej SS:ESP do odpowiedniego rejestru a następnie -zwiększenie wartości wskaźnika ESP

Stos i podprogramy: (adres wierzchołka stosu = SS:SP) 500:(Start) : call procedura1 516:... koniec:.... (Procedura1) 1000: call procedura2 1006: ret (Procedura2) 2000: nop ret

Ramki stosu -Wierzchołek stosu (SS:ESP) przesuwany jest w dół w celu zarezerwowania jego fragmentu do innych celów -Przed przesunięciem zawartość ESP zapamiętywana jest w specjalnym rejestrze EBP. Powstaje w ten sposób tzw. ramka stosu (ang. Stack Frame) czyli obszar pamięci od SS:EBP do SS:ESP -Powrót do sytuacji początkowej następuje poprzez przywrócenie początkowej wartości rejestru ESP (skopiowanie jej z rejestru EBP) Zastosowania: -zmienne lokalne procedur i funkcji -przekazywanie parametrów do procedur i funkcji

Ramki stosu: -przykład Function f3(d1,d2:integer) :integer; stdcall; var d3:integer; begin d1:=1; result:=d1+d2+d3; end;... var a,b,c:integer;.... b:=1; c:=2; a:=f3(b,c);...

Ramki stosu: przykład cd.: Function f3(d1,d2:integer) :integer; stdcall; var d3:integer; begin d1:=10; result:=d1+d2+d3; end;... var a,b,c:integer; b:=1; c:=2; a:=f3(b,c);

Instrukcje operacji na ciągach: (MOVS, LODS, STOS) LODSB/W/D = MOV AL,DS:(ESI) ADD/SUB ESI,1/2/4 STOSB/W/D = MOV ES:(EDI),AL. ADD/SUB EDI,1/2/4 MOVSB/W/D = MOV ES:(EDI),DS:(ESI) ADD/SUB ESI,1/2/4 ADD/SUB EDI,1/2/4 CLD, STD - zmiana kierunku w górę/ w dół

Instrukcje dotyczące pętli: (LOOP) Sekwencja instrukcji w Pascal-u: var i:integer; for i:=10 downto 0 do Begin End; Przykład zapisu w assemblerze: mov ecx,10 petla: loop petla Sekwencja instrukcji w Pascal-u: var i:integer; for i:=0 to 10 do Begin End; Przykład zapisu w assemblerze: mov ecx,10 petla: loop petla

Instrukcje dotyczące pętli: (REP) vartablica_źródłowa, tablica_przeznaczenia : array( ) of integer; Przykład: MOV ECX,1000 LEA ESI,tablica_źródłowa LEA EDI,tablica_przeznaczenia CLD REP MOVSW

Instrukcje dotyczące pętli: (REP) vartablica_przeznaczenia : array( ) of integer; Przykład: MOV ECX,1000 MOV EAX,0 LEA EDI,tablica_przeznaczenia CLD REP STOSW