Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

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

Podobne prezentacje


Prezentacja na temat: "Wykład 3: Jak działa typowy mikroprocesor? Budowa procesora rodziny Intel80x86 Architektury CISC i RISC Instrukcje skoków warunkowych Stos Instrukcje operujące."— Zapis prezentacji:

1 Wykład 3: 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

2 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

3 Kodowanie instrukcji za pomocą bajtów:

4 Rys. Umiejscowienie logiczne mikroprocesora w systemie mikroprocesorowym

5 Sygnały na pinach procesora.

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

7 Budowa mikroprocesora typu CISC Complete Instruction Set Computer

8 Budowa mikroprocesora typu RISC Reduced Instruction Set Computer

9 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

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

11 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)

12 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]

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

14 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

15 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

16 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 +$0c mov EAX,[i] mov [a],EAX JMP +$0a +$0c:mov [a],$ a +$0a:

17 Instrukcje skoków warunkowych - przykład 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 a fld stala fcomi ST,ST(1) jbe omin mov [ar],$ $0a:... Sposób 1 fld a fcomp stała fstsw ax sahf jbe +$0a mov [ar],$ a +$0a:...

18 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

19 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

20 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

21 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);...

22 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);

23 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ół

24 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

25 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

26 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


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

Podobne prezentacje


Reklamy Google