Programowanie Niskopoziomowe

Podobne dokumenty
CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

Architektura komputerów

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Materiały do wykładu. 7.Architekturax86. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Procesory rodziny x86. Dariusz Chaberski

Programowanie Niskopoziomowe

Schematy zarzadzania pamięcia

organizacja procesora 8086

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Architektura Systemów Komputerowych

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Mikroinformatyka. Wielozadaniowość

Programowanie Niskopoziomowe

ARCHITEKTURA PROCESORA,

Sprzętowe wspomaganie pamięci wirtualnej

Programowanie niskopoziomowe

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC

Programowanie w asemblerze Środowiska 64-bitowe

Mikroinformatyka. Tryb wirtualny

Organizacja typowego mikroprocesora

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Architektura komputerów

Sprzęt i architektura komputerów

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

PROGRAMOWANIE NISKOPOZIOMOWE

J. Ułasiewicz Komputerowe systemy sterowania 1. 1 Architektura PC Ogólna struktura systemu jednoprocesorowego

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Architektura komputerów

Asembler. Æwiczenia praktyczne

Zarządzanie zasobami pamięci

Mikroprocesory rodziny INTEL 80x86

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

Adam Kotynia, Łukasz Kowalczyk

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

WOJSKOWA AKADEMIA TECHNICZNA

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Tryb rzeczywisty to tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086.

Zarządzanie pamięcią w systemie operacyjnym

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Programowanie w asemblerze Środowiska 64-bitowe

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Od programu źródłowego do procesu

Sprzęt i architektura komputerów

Architektura komputerów

002 Opcode Strony projektu:

Wybrane zagadnienia elektroniki współczesnej

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Programowanie Niskopoziomowe

Załącznik do ćwiczenia w środowisku MASM32 Przesyłanie danych i zarządzanie danymi

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Procesory rodziny Intel

Metody Realizacji Języków Programowania

architektura komputerów w 1 1

Mikroinformatyka. Mechanizmy ochrony pamięci

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Architektura systemów komputerowych. Konstrukcja i zasada działania mikroprocesora

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

architektura komputerów w. 8 Zarządzanie pamięcią

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Architektura komputerów

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

Mikroprocesor Intel 8088 (8086)

Programowanie Niskopoziomowe

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

Programowanie w asemblerze Wprowadzenie

Zarządzanie pamięcią operacyjną

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

dr inż. Jarosław Forenc

Architektura Systemów Komputerowych

Magistrala systemowa (System Bus)

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Zarządzanie pamięcią operacyjną

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

, " _/'--- " ~ n\l f.4e ' v. ,,v P-J.. ~ v v lu J. ... j -:;.",II. ,""", ",,> I->~" re. dr. f It41I r> ~ '<Q., M-c 'le...,,e. b,n '" u /.

Struktura i działanie jednostki centralnej

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Ćwiczenie 3. Konwersja liczb binarnych

Architektura komputerów. Asembler procesorów rodziny x86

Rozszerzalne kody operacji (przykład)

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Materiały do wykładu. 4. Mikroprocesor. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Wykład 7. Zarządzanie pamięcią

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Kurs Zaawansowany S7. Spis treści. Dzień 1

Technika mikroprocesorowa I Wykład 2

Programowanie Niskopoziomowe

Działanie systemu operacyjnego

Architektura systemów komputerowych. Lista instrukcji procesora

Transkrypt:

Programowanie Niskopoziomowe Wykład 4: Architektura i zarządzanie pamięcią IA-32 Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie

Plan Wstęp Tryby pracy Rejestry Zarządzanie pamięcią

Architektura IA-32 Wiele usprawnień stosowanych we współczesnych procesorach m.in.: potokowość superskalarność predykcja skoków hiperwątkowość wielordzeniowość Z programistycznego punktu widzenia IA-32 nie zmieniła się znacząco poza wprowadzeniem zbioru instrukcji o wyższej wydajności

Tryby pracy Tryb chroniony (protected mode) Windows, Linux dostępne wszystkie instrukcje i cechy procesora programy mają przydzielone odrębne segmenty pamięci procesor chroni programy przed dostępem do innych segmentów pamięci Tryb rzeczywisty (real-addres mode) MS-DOS środowisko procesora 8086 z kilkowa udoskonaleniami (możliwość przełączania w inny tryb stosowany, gdy potrzebny bezpośredni dostęp do sprzętu i pamięci programy działające w tym trybie mogą powodować zawieszenia systemu Tryb systemowy (system management mode) oferuje implementację takich funkcji jak zarządzanie energią, diagnostyka i bezpieczeństwo systemu, które zazwyczaj używane są wyłącznie przez producentów sprzętu Tryb wirtualny (virtual-8086 mode) jest to szczególny przypadek w trybie chronionym, który umożliwia wykonywanie programów trybu rzeczywistego, ale jest zabezpieczony przed możliwością zawieszenia każdy program ma swój własny komputer 8086

Przestrzeń adresowa W 32-bitowym trybie chronionym do 4 GB W trybie rzeczywistym do 1 MB (adresy 20- bitowe) W trybie chronionym każdy program wykonywany w trybie wirtualnym dostaje swoje 1 MB pamięci Począwszy od procesora P6 technika Extended Physical Addressing umożliwia zaadresowanie do 64 GB

Rejestry EAX EBX ECX EDX EBP ESP ESI EDI EFLAGS EIP CS SS DS ES FS GS

Dostęp do fragmentów rejestrów danych Wykonywany za pośrednictwem 8-bitowych i 16-bitowych nazw Zastosowanie wyłącznie do rejestrów EAX, EBX, ECX 8 8 32-bitowe 16-bitowe 8-bitowe (starszy) 8-bitowe (młodszy) EAX AX AH AL. AH 16 AL EBX BX BH BL AX ECX CX CH CL EDX DX DH DL 32 EAX

Rejestry adresowe Młodsza część rejestrów adresowych - rejestry 16- bitowe (brak 8-bitowych) używane zazwyczaj tylko w trybie rzeczywistym. 32-bitowe ESI EDI EBP ESP 16-bitowe SI DI BP SP

Zastosowania rejestrów (1) Rejestry uniwersalne (danych i adresowe): EAX akumulator (automatycznie używany przy mnożeniu i dzieleniu) EBX wskaźnik do danych w segmencie DS ECX licznik pętli i łańcuchów znakowych EDX wskaźnik we/wy ESP wskaźnik stosu (nie powinien być używany w operacjach arytmetycznych i do przesyłania danych) ESI oraz EDI rejestry indeksowe (źródłowy i docelowy używane w instrukcjach łańcuchowych, wskaźniki danych w segmencie DS. i ES) EBP wskaźnik ramki stosu (bazowy)

Zastosowania rejestrów (2) Rejestry segmentowe CS segment kodu DS segment danych SS segment stosu ES, FS, GS dodatkowe segmenty EIP licznik rozkazów EFLAGS znaczniki stanu i kontrolne każdy znacznik (flaga) to pojedynczy bit (stany set lub clear) młodsza część 16-bitowy rejestr FLAGS Inne rejestry systemowe takie jak: IDTR, GDTR, LDTR itd.

Znaczniki stanu Przeniesienia (C Carry) przy przekroczeniu zakresu w arytmetyce bez znaku Przepełnienia (O Overflow) przy przekroczeniu zakresu w arytmetyce ze znakiem Znaku (S Sign) przy ujemnym wyniku Zera (Z Zero) przy wyniku równym 0 Przeniesienia pomocniczego przy przeniesieniu z 3 na 4 bit Parzystości suma jedynek w zapisie binarnym jest liczbą parzystą

Rejestry koprocesora Osiem 80-bitowych rejestrów zmiennoprzecinkowych ST(0), ST(1),,ST(7) organizacja stosowa używane we wszystkich operacjach zmiennoprzecinkowych ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7) 48-bitów 48-bitów 16 16 16 11 licznik rozkazów FPU wskaźnik danych (operand) FPU rejestr sterujący (ustawianie m.in. typu zaokrąglenia, maski wyjątków) rejestr stosu koprocesora (określa typ zawartości rejestrów ST(0)..ST(7)) rejestr stanu koprocesora (m.in. wyjątki położenie wierzchołka stosu) rejestr kodu operacji (bez prefiksu)

Rejestry MMX i XMM Osiem 64-bitowych rejestrów MMX do operacji na spakowanych liczbach całkowitych, do przechowywania operandów dla operacji wykonywanych na rejestrach MMX i XMM Osiem 128-bitowych rejestrów XMM w jednostce wektorowej (SIMD) do operacji na spakowanych lub skalarnych liczb zmiennoprzecinkowych pojedynczej precyzji 32-bitowy rejestr MXCSR bity stanu i sterujące używane w zmiennoprzecinkowych operacjach jednostki wektorowej (SIMD) MXCSR MM7 MM6 MM5 MM4 MM3 MM2 MM1 MM0 XMM7 XMM6 XMM5 XMM4 XMM3 XMM2 XMM1 XMM0

ZARZĄDZANIE PAMIĘCIĄ

Tryb rzeczywisty Real-address mode Przestrzeń adresowa 1MB Adresy 20-bitowe Programy mogą mieć dostęp do dowolnego obszaru pamięci Jednozadaniowość System MS-DOS (także wczesne wersje MS- Windows)

adresy liniowe Pamięć segmentowana Sposób adresowania adres bezwzględny (absolutny, liniowy) jest kombinacją 16-bitowej zawartości rejestru segmentowego i 16-bitowego przesunięcia (offset) względem początku segmentu F000 E000 D000 C000 B000 A000 9000 8000 7000 6000 5000 4000 3000 2000 1000 0000 8000:FFFF 8000:0000 segment offset 0250 pojedynczy segment (64kB) 8000:0250

Wyznaczanie adresu bezwzględnego Dla danego adresu segmentowego i przemieszczenia obliczenie adresu bezwzględnego polega na: pomnożeniu adresu segmentowego przez 16 (dołożenie szesnastkowego 0 na końcu) dodaniu przemieszczenia (ofsetu) Przykład: zamiana adresu 08F10:016A na adres liniowy Adres segmentu: 0 8 F 1 0 Offset: + 0 1 6 A Adres bezwzględny: 0 9 0 7 A Typowy program korzysta z trzech segmentów pamięci: kodu, danych i stosu. Rejestry CS, DS i SS przechowują adres segmentu i zapobiegają nakładaniu się segmentów.

Tryb chroniony Przestrzeń adresowa 4 GB Adresy 32-bitowe Każdy program ma własny obszar pamięci chroniony przed dostępem innych programów Zaprojektowany dla zastosowań wielozadaniowych Systemy operacyjne Unix-owe (w tym Linux) i MS- Windows (NT) Tablica deskryptorów segmentów Struktura programu: obszary kodu, danych i stosu deskryptory segmentów CS, DS, SS globalna tablica deskryptorów (GDT) Programy pisane w MASM-ie najczęściej stosują płaski model pamięci

Fizyczna pamięć RAM Obszar nieużywany Płaski model pamięci Wszystkie segmenty odwzorowane w całej 32-bitowej fizycznej przestrzeni adresowej Co najmniej dwa segmenty (jeden danych i jeden kodu) Globalna tablica deskryptorów FFFFFFFF (4GB) Deskryptor segmentu w GDT adres bazowy limit dostęp 00000000 0040 ---- 00040000 00000000

Wielosegmentowy model pamięci Każdy program ma własną lokalną tablicę deskryptorów, która przechowuje deskryptory dla każdego segmentu używanego przez program Lokalna tablica deskryptorów (LDT) FFFFFFFF (4GB) adres bazowy limit dostęp 00026000 0010 00008000 000A 00003000 0002 mnożone przez 100H 00026000 00008000 00003000 00000000

Translacja adresów Procesory IA-32 używają jedno- lub dwuetapowego procesu translacji adresu logicznego na unikalny adres w przestrzeni adresowej pamięci Pierwszy etap polega na wyznaczeniu adresu liniowego na podstawie adresu segmentu i przemieszczenia Drugi opcjonalny etap, nazywany translacją strony, zamienia adres liniowy na adres fizyczny

Zamiana adresu logicznego na adres liniowy Selektor segmentu wskazuje na deskryptor segmentu zawierający adres bazowy segmentu pamięci 32-bitowe przemieszczenie z adresu logicznego jest dodawane do bazowego adresu segmentu tworząc 32-bitowy adres liniowy. Adres logiczny selektor offset Tablica deskryptorów deskryptor segmentu + GDTR/LDTR bazowy adres tablicy deskryptorów adres liniowy

Indeksowanie w tablicy deskryptorów Każdy deskryptor segmentu indeksuje lokalną tablicę deskryptorów (LDT) programu Każda pozycja w tablicy odwzorowuje adres liniowy Adres logiczny SS ESP 0018 0000002A Lokalna tablica deskryptorów Przestrzeń adresów liniowych (nieużywane) DRAM DS offset 0010 000001B6 CS IP 0008 00002CD3 (indeks) 18 10 08 00 001A0000 0002A000 0001A000 00003000 rejestr LDTR

Stronicowanie (1) Pamięć wirtualna używa pamięci dyskowej jako części pamięci, dzięki czemu łączna zajętość pamięci przez wszystkie uruchomione programy może być większa od fizycznego rozmiaru pamięci RAM Tylko część programu musi być przechowywana w pamięci, a pozostałą część może być przechowywana na dysku Obszar pamięci używany przez program jest podzielony na mniejsze części nazywane stronami (najczęściej 4kB) Podczas wykonywania programu procesor wybiórczo usuwa nieaktywne strony z pamięci, a na ich miejsce ładuje inne bezpośrednio ppotrzebne strony

Stronicowanie (2) System operacyjny zarządza katalogiem stron i tablicami stron Translacja strony: CPU zamienia adres liniowy na adres fizyczny Błąd strony: występuje wtedy, gdy potrzebna strona nie znajduje się w pamięci, a CPU przerywa program Menedżer pamięci wirtualnej (VMM Virtual Memory Manager) narzędzie systemu operacyjnego zarządzające ładowaniem i usuwaniem stron pamięci wirtualnej Po skopiowaniu strony do pamięci program wznawia działanie

Translacja strony Adres liniowy jest podzielony na 10-bitowy indeks katalogu stron, 10-bitowy indeks tablicy stron, 12-bitowe przemieszczenie w obrębie strony CPU używa wszystkich 3 pól do wyznaczenia adresu fizycznego Adres liniowy katalog tablica offset Katalog stron Tablica stron Ramka strony adres fizyczny indeks tab. stron indeks katalogu CR3 32 bity

DZIĘKUJĘ ZA UWAGĘ