Programování v asembleru - prostředí

Slides:



Advertisements
Podobné prezentace
Procesory Křemíkový čip, který řídí všechno dění v počítači
Advertisements

Programování v asembleru - multiprocesory Jakub Yaghob.
Programování v asembleru - multiprocesory Jakub Yaghob.
Mikroprocesory Intel Obr. 1.
Tato prezentace byla vytvořena
13AMT Procesory I. Lecture 2 Ing. Martin Molhanec, CSc.
Mikroprocesory Procesory. Procesor je synchronní zařízení provádí operace s daty je programovatelný pomocí mikroinstrukcí je více rodin procesorů (jednočipy.
Procesory Filip Skulník.
Úvod. Základní úrovně: hardwarová (procesory, jádra) programová (procesy, vlákna) algoritmická (uf... ) Motivace: zvýšení výkonu redundance jiné cíle,
Programování v asembleru - historie
Principy překladačů Interpretované jazyky Jakub Yaghob.
Principy překladačů Architektury procesorů Jakub Yaghob.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Program Programátorský model procesoru Instrukční soubor
Instrukční soubor PIC16Fxxx osnova: Charakteristika instrukčního souboru Rozdělení instrukcí Časové průběhy (zpracování instrukcí)
Lecture 3 Ing. Martin Molhanec, CSc.
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT VY_32_INOVACE_2_1_04 Název vzdělávacího materiáluProcesory Jméno autoraIng. Bulka Josef Tématická.
Architektura a vývoj PC 3. Ing. Vladislav Bezouška, Ph.D.
PROCESORY Základní přehled.
DIGITÁLNÍ UČEBNÍ MATERIÁL Číslo projektuCZ.1.07/1.5.00/ Název projektuEU peníze středním školám Masarykova OA Jičín Název školyMASARYKOVA OBCHODNÍ.
Výrok „Počítače by jednou mohly vážit méně než 1.5 tuny.“ (časopis Popular Mechanics, 1949)
Vývoj architektury procesoru
PROCESOR Procesor je často charakterizován jako „mozek počítače“. Bez procesoru není počítač schopen vykonávat žádné operace. Počítá prakticky vše, co.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_02A13 Autor Ing. Jiří Kalousek Období vytvoření duben 2014.
Architektura a vývoj PC 2.
PicoBlaze, MicroBlaze, PowerPC
Základy mikroprocesorové techniky
Procesory.
David Klíma- 1 - Opáčko Celkové schéma základní desky Co je to čipová sada IRQ DMA Slot, patice Domácí úkol: zákl. deska pro P4.
Tato prezentace byla vytvořena
= monolitický integrovaný obvod obsahující kompletní mikropočítač
Procesory.
Přehled a vývoj mikroprocesorů
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Procesor Procesor je ústřední výkonnou jednotkou počítače, která čte z paměti instrukce a na jejich základě vykonává program. Pokud bychom přirovnali počítač.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Procesory tvy procesory.
Začátky mikroprocesorů
Vnitřní (operační paměť)
Procesor.
Intel Pentium D (1) Založen na mikroarchitektuře NetBurst
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
18/07/20151 Intel (1) Vyroben v roce 1989 Prodáván pod oficiálním názvem 80486DX Plně 32bitový procesor Na svém čipu má integrován: -zmodernizovaný.
OSNOVA: a) Ukazatel b) Pole a ukazatel c) Pole ukazatelů d) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro.
Procesory CPU Dříve MIKROPROCESORY.  elektronická souč. která rychle provádí výpočty (operace). Miliony aktivních prvků (tranzistorů)  časovač - vytváří.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
X13UIT Procesory I. Lecture 2 Ing. Martin Molhanec, CSc.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Procesory.
Instrukce procesoru.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Číslo projektu CZ.1.07/1.5.00/ Název školy Gymnázium Česká a Olympijských nadějí, České Budějovice, Česká 64 Název materiálu VY_32_INOVACE_IVT_1_KOT_04_PROCESOR.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Technika počítačů 3. Mikroprocesory © Milan Keršlágerhttp:// Obsah: ●
Překladače Optimalizace © Milan Keršláger
Vývoj architektur mikroprocesorů Od 4 bitů k superskalárnímu RISC Vývoj architektur mikroprocesorů Od 4 bitů k superskalárnímu RISC Pavel Píša
Intel Pentium D (1) Založen na mikroarchitektuře NetBurst
Operační systémy Mikroprocesory
Výukový materiál zpracován v rámci projektu
Jednočipové počítače – instrukční sada
Mikropočítač Soubor instrukcí
Hardware číslicové techniky
Správa paměti.
Výukový materiál zpracován v rámci projektu
Segmentace Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Intel Pentium (1) 32-bitová vnitřní architektura s 64-bitovou datovou sběrnicí Superskalární procesor: obsahuje více než jednu (dvě) frontu pro zřetěze-né.
Intel Pentium D (1) Vyráběn s frekvencemi 2,80 GHz – 3,20 GHz
Paměť.
Intel (1) Vyroben v roce 1989 Prodáván pod oficiálním názvem 80486DX
Transkript prezentace:

Programování v asembleru - prostředí Jakub Yaghob

Motivace Dříve Nyní  Rychlejší a menší kód  Přístup do „přízemí“  Obtížné programování  Není přenositelné (procesor, překladač, OS) Nyní  Ruční kód horší než generovaný (složitost CPU)  Obtížné programování  Rozvoj aplikací jednočipů  GPU se programují v „asembleru“

Obsah přednášky Aplikační prostředí vybrané současné architektury Instrukční soubor Vybraný asembler Historie mikroprocesorů a architektur Navazující přednáška „Systémové architektury mikroprocesorů“

Současné a nedávné architektury IA-32 Intel, dříve nejrozšířenější, dnes postupně nahrazována AMD64 IA-64 Intel, zcela odlišná od IA-32, servery, upadá v zapomnění AMD64/Intel 64 (EM64T) AMD, rozšíření IA-32, přidal se po čase i Intel, dnes nejrozšířenější SPARC Sun, servery, už se nevyrábí PA-RISC HP, servery, už se nevyrábí PPC IBM, velmi výkonná, servery, Cell ARM Není přímo vlastněna firmou, výhodný poměr výkon/příkon – mobilní zařízení

Historie IA-32 – I 8086, 8088 16-bitová data, 20-bitová adresace 80286 chráněný režim, 24-bitová adresace Intel 386 1985, první zástupce IA-32 32-bitová data, 32-bitová adresace stránkování, pipeline (6 stupňů)

Historie IA-32 – II Intel 486 1989 rychlá pipeline (5 stupňů) L1 cache 8KB na čipu integrovaný x87 FPU SMM

Historie IA-32 – III Pentium 1993 dvojitá pipeline (u a v) L1 cache 8KB data, 8KB kód MESI protokol pro cache rozšíření stránkování (4MB) BTB APIC MMX (později)

Historie IA-32 – IV P6 (Pentium Pro, Pentium II, Pentium III) 1995 třícestně superskalární dynamické vykonávání (microdataflow analysis, out-of-order execution, branch prediction, speculation execution) přidána 256KB L2 cache 36-bitová fyzická adresa MMX (Pentium II), SSE (Pentium III) Celeron, Xeon

Historie IA-32 – V Pentium 4 2000 NetBurst (rapid execution engine, hyper pipelined technology, advanced dynamic execution) SSE 2/SSE 3 HyperThreading

Historie IA-32/Intel 64 – VI Core Duo/Core Solo 2006 2/1 jádra Smart Cache Core 2 Duo, Core 2 Quadro 2/4/6 jádra Intel 64, virtualizace Nová mikroarchitektura SSE 4.1

Historie IA-32/Intel 64 – VII Core i7/i5/i3 2008 4 jádra Nová mikroarchitektura zaměřená spíše na servery Integrovaný paměťový řadič, QPI (Quick Path Interconnect), opět Hyper-threading SSE 4.2

Historie IA-32/Intel 64 – VIII Core i7/i5/i3 – 2nd generation (Sandy Bridge) 2011 Nová mikroarchitektura GPU u CPU AVX Turbo Boost RDRAND (Ivy Bridge)

Historie IA-32/Intel 64 – IX Core i7/i5/i3 – 3rd generation (Haswell) 2013 Nová mikroarchitektura AVX2, FMA3, gather, bit manipulation Transakční paměť

Intel 64/AMD64 Prodloužení agonie IA-32 64-bitový plochý (flat) adresový prostor 8 přidaných obecných registrů 8 přidaných registrů pro SSE 64-bitové obecné registry a ukazatele Jednotné bytové adresování v registrech Relativní adresace vůči ukazateli instrukcí

P6 mikroarchitektura

NetBurst mikroarchitektura

Core i7 prostředí

Výpočetní prostředí IA-32 – I Adresový prostor Lineární adresový prostor 4GB (32 bitů) Fyzický adresový prostor 64GB (36 bitů) Základní registry 8 „obecných“ registrů (32 bitů) Dělení na menší (16 a 8 bitů) 6 segmentových registrů (16 bitů) Příznakový registr EFLAGS (32 bitů) Ukazatel instrukcí EIP (32 bitů)

Výpočetní prostředí IA-32 – II x87 FPU registry 8 datových (80 bitů) Řídící, stavový a tag registry (16 bitů) x87 FPU ukazatel instrukce, ukazatel dat Registr operačního kódu MMX 8 MMX registrů (64 bitů)

Výpočetní prostředí IA-32 – III XMM 8 XMM registrů (128 bitů) Registr MXCSR YMM Rozšíření XMM na 256 bitů pro AVX Zásobník V paměti Podpora pro volání funkcí a předávání parametrů Roste směrem k nižším adresám

Výpočetní prostředí Intel 64 Podobné IA-32 až na následující změny Adresový prostor Lineární adresový prostor teoretický 264 Lineární adresový prostor skutečný 248 Fyzický adresový prostor 240 Rozšíření základních registrů (kromě segmentových) na 64-bitů, přejmenování s předponou R (např. RAX, RIP) Přidání 8 základních registrů Přidání 8 XMM/YMM registrů

Obecné registry IA-32 EAX střadač EBP ukazatel na data do zásobníku EBX ukazatel dat ESI zdroj řetězcových operací ECX čítač EDI cíl řetězcových operací EDX obecný registr (ukazatel I/O) ESP ukazatel vrcholu zásobníku

Obecné registry Intel 64

Segmentové registry IA-32 Obsahují 16-bitové selektory CPU je stále používá, nelze je „vypnout“ CS – kódový segment Instrukce čtena z CS:EIP DS, ES, FS, GS – datové segmenty SS – zásobníkový segment Vrchol zásobníku na SS:ESP

Segmentové registry Intel 64 Segmentace téměř zrušena CS, DS, ES, SS mají začátek segmentu 0 a jsou přes celý adresový prostor FS, GS jsou přes celý adresový prostor, ale začátky segmentu jsou platné a používají se Výjimka vynucená systémem Windows TLS

Paměťové modely IA-32 – I Flat model Dnes běžně užíván OS

Paměťové modely IA-32 – II Segmentovaný model Dřívější OS

Registr příznaků – I

Registr příznaků – II CF – carry flag PF – parity flag Přetečení, přesuny při rotacích PF – parity flag Parita na nejnižších 8 bitech AF – adjust flag Přetečení z nižších 4 bitů ZF – zero flag Výsledek je 0 SF – sign flag Nejvyšší bit výsledku = znaménko OF – overflow flag Přetečení ve znaménkové aritmetice DF – direction flag Směr řetězcových operací

Operandy instrukcí – I Operandy Přímý operand Implicitní – předem dány instrukcí  Explicitní – zapsány u instrukce (i tak někdy neortogonální) U dvojoperandových instrukcí zápis zprava do leva (pozor na GNU asm!!!) OPER dst,src  dst = dst OPER src Přímý operand Číslo ADD EAX,14

Operandy instrukcí – II Registrový operand Základní registry (bez EIP) (32, 16, 8 bitů) X87 FPU, MMX, XMM registry Systémové registry Adresa I/O Přímý operand (jen 8 bitů) OUT 20,AL Registr DX IN AL,DX

Operandy instrukcí – III Paměťový operand Paměť vždy adresována segmentovým selektorem a posunem v segmentu Posun v segmentu určen adresovým výrazem Offset = [Base] + [Index [* Scale]] + [Displacement]

Operandy instrukcí – IV Výběr segmentového selektoru Explicitně – zapsán před instrukcí jako prefix, kromě: Instrukce se vždy čtou z CS:EIP Cílový adresa řetězcových instrukcí vždy užívá ES Instrukce PUSH a POP vždy adresují zásobník přes SS MOV EAX,[ES:EAX+EDX*4+4] Implicitně – podle použití MOV EAX,[EBP+8] CS Čtení instrukcí SS Všechny operace se zásobníkem Bázový registr ESP, EBP DS Všechny odkazy na data, kromě výjimek ES Cíl řetězcových instrukcí

Datové typy Uložení v paměti Little endian Zarovnání v paměti na svoji velikost Quadword od i486 Double Quadword od Pentia III (SSE)

Formát instrukce IA-32 Prefixy ve skupinách LOCK, REPNE/REPNZ, REP/REPE/REPZ Segmentové prefixy, nápověda pro skoky (taken/not taken) Velikost operandu Velikost adresy

Formát instrukce Intel 64 Podobný jako pro IA-32 Přidány prefixy REX Defaultní velikost operandů zůstává 32 bitů kromě Blízkých skoků Instrukcí implicitně pracujících s RSP