AK wykład (

AK wykład 28.11.2014

Poprzedni: budowa procesora+tworzenie zestawu rozkazów ; cisc, mlo rejestrów, 8,6,16

Alternatywa: pozbycie się instrukcji rzadko używanych(arytmetyka skoków, dzielenia, wprowadzenie większej licz rejestrow)

RISK

Architektura x86 rozszerzenie zestawu rozkazu

REJESTRY

Do ogólnego przeznaczenia

EAX, ECX, EDX, EBX, ESP,EBP,ESI,EDI -PODST!!1

Mnożenie: arg w akumulatorze, wynik w b i d ;

eSP, ebp- rejestry wskaźnikowe; esi-indeks zrodła; edi-indeks celu

8 rejetro og.przeznaczenia

Jest również zestaw rejestrów segmentowych, jawnie nieuzywany; pozostałoś cpo pracy w tr. Rzeczywistym,

Mamy licznik rozkazów-EIP

EFLAGS- flagi

Rejestry w EM64T

Rejestry ogólnego przezn-64 bitowe rax,rcx,rdx,rb.,rsp,rbp,rsi,rdi

DODAtkowe: r8,r9,r10,r11,r12,r13,r14,r15,

32bt: eax,ecx,edx,ebx,esp,ebp,esi,edi

Dodatkowe: r8d,r9d….

16bit: ax,cx,dx,bx,sp,bp,si,di

R8W,R9W….

8bit: al,cl,dl,bl,spl,bpl,sil,dil,

Dod: r8b,r9w…

Jedn zmiennoprzecisnkwa posiada stos ośmiu rejestrów 80bitowyc st0-st7

Ogolnie mamy do dyspozycji 16 rejestrów ogólnego przeznaczenia

Rejestry w em64t

Operacje 8i16 bit np. mov nie modyfikuja starszych, niewykorzystanych części rejestrów

Mov,rax,0; rax=64 zera

Not rax; rax=64jedynki

Mov al.,0; w wyniku starsze 56 bitow=1, młodsze 8 wyzerowane

Operacje 32bit zeruja starsza czesc rejestru

Mov,rax,0; rax=64 zera

Not rax; rax=64jedynki

Mov eax,0; rax=0

FLAGI

Nie trzeba wszystkiego znac,

Flagi stanu(S)+flaga sterujaca©

Flagi s ustawiane w wyniku wykonania operacji rytm./logicznej oraz test i cmp

„ręcznie” znaczniki można ustawić instrukcjami stf i kasować cl/stf f-pierwsza litera flagi no sti,clc;

Typy inst.: xor,Sup, mul. Mov

Operacje na rejetrach sa najszybsze! Kilkukrotnie krócej niż operacje na pamieci-> PO TO JEST CASCH!

Ski warunkowe jxx

Skoki bezwarunkowe jmp

Wywolanie podprogramu call i powrot ret

Skoki krótkir:

-prszesuniecie względem bieżącej pozycji(8bit,max_127 lub 128 najt_

-wykorzystywanie najczęsceij lokalnie (zoskaz zajmuje 2 bajty; wykonuje ie najrcej)

Szansa, ze instrukcje znajdują się w pamieci podręcznej cache

Inne sposoby adresowania: względne i absolutne (adresy dłuższe np. 16,32 bir zajmuja wiecej miejsca w pamieci, wykonuja się dłużej-CIEKAWOSTKA!

-skoki bliskie (near) w ramach segmentu

=odległe(far):do innego segmentu

If(ax=bx)then cx=cx+1 else cx=cx+3 enD_if

Cmp ax,bx;porownaj ax=bx

Inz/jne else; jesli nie wyszlo zero/nie SA rowne,skocz do etykiety else

Inc cx;akcha dla warunku spełnionego

Jmp end_if

Else

Add cx,3; akcja alternatywna

Enf_if;

Dla warunku spelnionego czas est krirszy

Tryby adresowania:

Bez dostępu do pamięci:

Natychmiastowy mov rejestr, stala,

Rejestrowy mov rejestr,rejestr2 mov eax,ebx

Wymagające dostępu do pamięci

Bespośredni(direct)

Mov reestr,[adres_komorki]

Mov eax,[100] eczytuje do eax wartość z komorki pamieci o adresie 100

Pośredni

Mov rejestr,[rejestr], np. mov eax,[ebx]wczytuje do eax wartość z kom pamieci o adresie umieszcznym w wbx

Indeksowy

Ogólnie: [baza + indeks *stała+/- przesuniecie]

Mov eax,[ebx+esi*4+8] baza: np. adres początku tab, indeks-nr elementu tab(licząc od zera)_ skala-liczba bajtów przypadająca na 1 element tab(np. 4-double Word)(nie wszystkie składniki musza występować, np.[ebx-8])

Bezpośredni i pośredni ->ADRES TRZYMANY W REJESTRZE!!

Tryby pracy procesora : (waznee!!!!)

  1. Chroniony-dla wielozadaniowych systemow operacyjnych, system jak i każdy proces ma przydzielony poziom uprzywilejowania(kontrolowany dostęp do zasobów i wykonywania pewnych operacji) i osobna przestrzeń adresowa(2^32-4gb z pae 64gb), zabezpieczoną przed niepowołana ingerencją. Pamięć wirtualna, stronicowanie pamięci. Możliwy płaski model pamięciowy p w Linusie-udoskonalony w em64t; Systemy Linux, Windows

  2. Rzeczywisty po włączeniu zasilania; zgodny z 8086; BIOS działal w trybie rzeczywistym, przestrzeń adresowa 1mb(2^20) podział na segmenty po 64kb(2^14) adresowanie typu: segment +przesuniecie(offset)

Cs wskazuje segment kodu, ds0-segment danych, SS- segment stosu

Systemy: Dos, tryb domyślny procesora-po włączeniu zasilania/resecie

  1. Wirtualny 8086-umozliwia uruchamianie programów dla 8086 i DOS podczas pracy w trybie chronionym, np. okno DOSa w systemie Windows

Technical elegance!=market success

-maniakalne utrzymywanie zgodności z dziadowskim 8086

-chaotyczne dodawanie nowych instrukcji

-brak konsekwencji w składni argumentów(np. mul,imul)

-brak konsekwencji w nazwach dodanych rejestrów/ich części

-32 bitowe działania na rejestrach przebiegają w odmienny sposób niż 8/16 bit

-odmienna implementacja działań na liczbach zmiennoprzecinkowych(osobny stos)

-obecnie: wyrafinowane, skomplikowane techniki zrównoleglania na poziomie instrukcji, wielopotokowość, przetwarzanie poza kolejnością, przewidywanie skoków, przemianowanie rejestrów itp.(pomijając wielordzeniowość/wielowątkowość)

Skąd ta popularność:

Niestety, Intel zaoferował dostępny 16 bitowy procesor wcześniej niż konkurencja (np. motorola mc68000)

Z punktu widzenia programisty x86 jest architektura CISC ale rdzenie obecnie produkowanych procesorów pracują jako RISC!!!!

Instrukcje złożone SA rozkładane na sekwencje mikrooperacji prostych

C program->kompiler->assembly language program->assembler->object: machine language model Object: libr ary Routie-> Linker->executable

Jak program jest umieszczany w pamięci??

Mamy przestrzeń adresowa liniowa płaską-tablica jednowymiarowa złożona z komórek pamięci. Każdy proces ma swoją przestrzeń adresowa (watki współdzielą przestrzeń adresowa); program nie jest ładowany od adresu 0; (tam są jakieś sprawy systemowe) potem, wczytywany jest kod programu(sekcja text) następnie alokowana jest pamięć na dane statyczne (section data!) (static data), dale: zmienne dynamiczne(pamięć alokowana); sterta i stos, który jest alokowany w górnym obszarze pamięci

Stack

Dynamic data

Static data

Text

Reserved

Stos:

Struktura danych w pamięci operacyjnej komputera zorganizowana jako lifo

Adresowana wskaźnikiem stosu- wskazującym na ostanio odlozony na stos element

Zachowywanie wartości rejestrów przed ponownym uzyciem i pozniejsze ich przywracanie

Push eax ; push- umieszcza element na stosie

Pusc ebx

Push ecx

Call funkcja; wywołanie podprogramu, który może używać, nadpisać rejestry a, b c,

Pop ecx ;pop-ściąganie ze stosu-w odwrotnej kolejności niż umieszczenie

Pop ebx

Pop eax

Przekazywanie argumentów do wywołanej funkcji/podprogramu

Alokacja zmiennych lokalnych/automatycznych funkcji =/podprogramu

Zachowywanie/ściąganie adresu powrotnego(śladu) podczas wywoływania i kończenia funkcji/podprogramu

STOS_

Wskaźnik stosu-sp(esp_ wskazuje ostani odlozony na stos element

Push argument

  1. Przesuwa wskaznik stosu o liczbe bajtow odpowiadajaca domyślnej długości słowa procesora w dół

  2. Umieszcza wartośc argumentu na stosie, w nowym miejscu

Pop argument

  1. Odczytuje wartośc komorki adresowej

  2. Przesuwa wskaźnik stosu o liczbe bajtow w górę

W x86 mips wierzcholek stosu jest na dole, dno na górze

Ale w niektórych procestwac stos jest zorganizowany na odwrót (i8051”)


Wyszukiwarka

Podobne podstrony:
15 2013 14 BO SS Część AK Wykłady Zagadnienia
AK wykłady
WYKúAD 6, AK, pasemko, PROJEKTOWANIE KONSERWATORSKIE, Skumulowane wszytskie wyklady z Hoff 1 7, Skum
AK opracowanie z wykładów, AK - antropologia kulturowa
LAZAR syllabus Makro 1 wyklad Dz AK 2012
0 BO 3 1 PP Dzienne 2014 AK&BK Plan cyklu wykładowego [v2]
Labor z AK, student - informatyka, wykłady, Architekt-komp-MarekM
AK SIP 2012 wyklad4
Ak wykł 4, Antropologia kulturowa, Wykład z antropologii
Ak wykł5, Antropologia kulturowa, Wykład z antropologii
zaliczenie wykladow, AK sem II (PB), szkoła, szata roslinna materialy z temego roku
Testy AK, student - informatyka, wykłady, Architekt-komp-MarekM
ZIF2013 2014 WSFiZ Ramowy program wykładów sem letni r ak 2013 2014 v 1 6 4 dla wszystkich studentów
AK SIP 2012 wyklad2
WYKúAD 2, AK, pasemko, PROJEKTOWANIE KONSERWATORSKIE, Skumulowane wszytskie wyklady z Hoff 1 7, Skum
ZPKB - wykłady AK, Zarządzanie portfelem kredytowym banku, Wiatr

więcej podobnych podstron