HARDVERKÖZELI PROGRAMOZÁS1
|
|
- Gizella Péter
- 8 évvel ezelőtt
- Látták:
Átírás
1 HARDVERKÖZELI PROGRAMOZÁS1 Dr. Varga Imre Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék
2 Követelmények Gyakorlat (aláírás) Óralátogatás (maximum hiányzás: 3) C programozási beugró (1 javítási lehetőség) 2 gyakorlati ZH Mindegyik legalább 50% A 2 ZH átlaga legalább 60% 1 javítási lehetőség (teljes féléves anyag) Elmélet (kollokvium) Írásbeli vizsga (gyakorlati aláírás esetén) Jegy: 75% elméleti vizsga + 25% gyakorlati eredmény Hardverközeli programozás 1 2
3 Mérnökinformatikus képzés absztakció, logikai szint Döntéstámogató rendszerek Mesterséges intelligencia alapjai Bevezetés a LabView programozásba Magas szintű programozási nyelvek 1-2 Hardverközeli programozás 1-2 Digitális technika Elektronika 1-2 Fizika 1-2 Hardverközeli programozás 1 3
4 Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése és működése Assembly programozás Magas szint leképezése alacsonyra Modern processzorok A programozás operációsrendszerhez kapcsolódó aspektusai Konkrét processzor architektúrák Utasításkészletük, programozásuk Hardverközeli programozás 1 4
5 A tárgy célja Összeköttetés teremtése Az absztrakt és az alapozó ismeretek között A program és az elektronika között Hardver ismeretek átadása Magas szintű programozás mélyebb megértése Hatékonyabb programozás Az assembly programozás bemutatása Szemléletformálás Átfogó kép kialakítása a számítógép rendszerekről Hardverközeli programozás 1 5
6 Számábrázolás, adattípusok Fixpontos számábrázolás Lebegőpontos számábrázolás A C nyelv típusainak reprezentációja
7 Mi az outputja a programnak? Hardverközeli programozás 1 7
8 Adategységek Bit: két állapot (0, 1) Nibble(fél byte): 4 bit Byte: 8 bit Félszó: 16 bit Szó: (többnyire) 32 bit Dupla szó: 64 bit Adatszervezés Hardverközeli programozás 1 8
9 Megadás Adattípus Reprezentáció Tartomány Műveletek A C nyelv aritmetikai (egyszerű) típusai [unsigned signed] char [unsigned signed] [short long long long*] int float [long*] double *ISO C99 Hardverközeli programozás 1 9
10 Fixpontos számábrázolás Egész értékek reprezentálása Előjel nélküli eset ábrázolandó szám kettes számrendszerben adott számú biten Példa (1 byte esetén) N biten ábrázolható legkisebb szám: 0 Legnagyobb szám: 2 N -1 Hardverközeli programozás 1 10
11 Előjeles eset Fixpontos számábrázolás Nem negatív érték esetén: előjel nélküli logika Negatív érték esetén: kettes komplemens Bitek invertálása(egyes komplemens) A kapott érték növelése 1-gyel Példa (1 byte esetén) N biten ábrázolható legkisebb szám: -(2 N-1 ) Legnagyobb szám: 2 N meghatározza az előjelet Hardverközeli programozás 1 11
12 Aritmetikai túlcsordulás Két féle hibalehetőség Előjel nélkül: több bit lenne szükséges (carry) >255 Előjeles: nem várt előjelváltás (overflow) Hardverközeli programozás 1 12
13 Kiterjesztés Néha szükség van egy adatot a korábbinál több biten ábrázolni úgy, hogy az értéke ne változzon Nulla kiterjesztés Rövid előjel nélküli értékből hosszú előjelnélküli 8 bit: bit: bit: bit: Előjel tartó kiterjesztés Rövid előjeles értékből hosszú előjeles 8 bit: bit: bit: bit: Hardverközeli programozás 1 13
14 BCD ábrázolás Binárisan kódolt decimális Minden számjegy 4 biten ábrázolva Vannak kihasználatlan bitkombinációk Pakolatlan BCD 1 számjegy -1 byte: 0000 vagy (0011 * ) bevezető Pakolt BCD 2 számjegy 1 byte: nibblealapú *ASCII miatt Hardverközeli programozás 1 14
15 Ábrázolás Egész típus Fixpontos számábrázolás Előjeles vagy előjel nélküli BCD Bájtsorrend Little-endian: LSB elől (gazdagép bájtsorrend) Big-endian: MSB elől (hálózati bájtsorrend) Megadás különböző módokon Pl. C nyelven: 30=30u=30l=036=0x1E=0b11110 * *ISO C99 Hardverközeli programozás 1 15
16 Értékei karakter kódok Karakter típus Fixpontos számábrázolás C: ASCII (1 byte, előjeles/előjel nélküli, egészként használható) Java: Unicode (2byte, előjel nélküli) ASCII ISO (Latin 1) Unicode ASCII kódtábla 0x00-0x1F: vezérlő karakter 0x30-0x39: számjegy 0x41-0x5A: angol nagy betű 0x61-0x7A: angol kis betű Hardverközeli programozás 1 16
17 Felsorolásos típus Alacsony szinten int-ként reprezentált C nyelven a két kód assembly szinten azonos Hardverközeli programozás 1 17
18 A Cegész típusai típus méret tartomány [signed] char unsigned char 1 byte [signed] short unsigned short 2 byte [signed] int unsigned int 4 byte [signed] long 8 byte unsigned long (4 byte) [signed] long long unsigned long long 8 byte Hardverközeli programozás 1 18
19 Lebegő pontos számábrázolás Valós számok ábrázolása Alapja a normalizálás: 123,45 = 1, Minden (2 számrendszerbeli) szám felírható így: (-1) S M A K ahol a mantissza (M) 1.H alakú, azaz 1 2 M < 10 2 karakterisztika (K) pozitív és negatív is lehet Nem tároljuk: alap (A=2), rejtett bit, K előjele E=K+B adott számú biten nem negatív (B: nulla pont) Tárolandó: S, H, E Hardverközeli programozás 1 19
20 Lebegő pontos szabvány IEEE 754/1985 szabvány (ISO/IEC/IEEE 60559:2011) Előjel Pozitív: 0; Negatív: 1 Formátumok Egyszeres pontosság Dupla pontosság Kiterjesztett pontosság méret S hossz E hossz H hossz 32 bit 1 bit 8 bit 23 bit bit 1 bit 11 bit 52 bit bit 1 bit 15 bit 63(+1) bit Hardverközeli programozás 1 20 B
21 Lebegő pontos számábrázolás Példa: egyszeres pontossággal = = Előjel: S =1 Karakterisztika: K = 3 10 = 11 2 Mantissza: M = Hasznos bitek: H = Eltolt karakterisztika: E = = S E H Hardverközeli programozás 1 21
22 Kerekítési hiba Ok: hasznos bitek tárolás véges számú biten Túl sok hasznos bit esetén kerekítés szükséges Ha az utolsó tárolható hasznos bit után 0 áll, akkor a további biteket levágjuk Különben felfelé kerekítünk Kerekítési hiba: nem pontos ábrázolás Példa: 0.3 ábrázolása egyszeres pontossággal hasznos bitek: tárolt bitek: Hardverközeli programozás 1 22
23 Speciális lebegőpontos értékek +0 és -0 előjel bit 0 (+) vagy 1 (-), minden más bit 0 Pl.: 0.0/-1.0, -1.0*0.0 ±végtelen (Inf) karakterisztika csupa 1, mantissza csupa 0 Pl.: 1.0/0.0, inf+1.0 nem szám (NaN) karakterisztika csupa 1, mantissza nem csupa 0 Pl.: 0.0/0.0, inf-inf, NaN+1.0 denormalizált szám (subnormal) karakterisztika csupa 0, mantissza nem csupa 0 Hardverközeli programozás 1 23
24 A Cnyelv valós típusai Valós típusú konstansok formátuma f 75.1e L E+1 Valós típusok paraméterei méret minimum maximum pontosság float 4 byte számjegy double 8 byte számjegy long double* 10 byte számjegy Hardverközeli programozás 1 24
25 Mutató típus Indirekt hivatkozásra szolgálnak Tartományának elemei tárcímek A mutató típusú változónak is van saját címe A Cnyelvben Előjel nélküli egész reprezentáció (32 vagy 64 bit) NULL: csupa nulla bit Értéke adatcím és kódcím (!) is lehet Aritmetikai műveletek is végezhetőek velük Hardverközeli programozás 1 25
26 Rekord típus Különböző típusú területek együtt Mindegyik mező a saját reprezentációjával Nem biztos, hogy folytonos memóriaterületen A.a A.b A.c A.d sizeof(a)==16 B.d B.a B.c B.b sizeof(b)==24 nem használt byte Hardverközeli programozás 1 26
27 Tömb típus Azonos típusú elemek folytonosan tárolva Minden elem az adott reprezentációval A tömb neve C nyelven: az első elemre mutató nevesített konstans Egyes nyelveken: az összes elemre hivatkozás Egydimenziós tömb i. elemének a címe (A i ) 1 ahol E egy adatelem mérete és A 1 a tömb kezdőcíme Hardverközeli programozás 1 27
28 Több dimenziós tömbök Sorfolytonos tárolás,,,,,,,,,,,,, Az i. sor j. elemének címe (A i,j ) egy NxM-es mátrixban,, 1 j 1 E ahol E egy adatelem mérete és A 1,1 a mátrix első elemének címe Hardverközeli programozás 1 28
29 Karakterek sorozata Sztringtípus Elemei a megfelelő belső reprezentációban (pl. C: 1byte, ASCII; Java: 2 byte, Unicode) Hossza Fix hosszúságú Változó hosszúságú A sztring elején hossz tárolás (pl. Pascal) A sztring végén speciális lezárójel(pl. C) Kombinált (pl. Delphi) Hardverközeli programozás 1 29
30 A C nyelv tömbje Tömb index 0-tól (db-1)-ig Csak egydimenziós tömb van, viszont van tömbök tömbje Sztring: karaktertömb Lezáró karakter \0 (ASCII kód: 0) A tömb neve az első elemre mutató nevesített konstans (mutatóorientáltság erős) egyenértékű utasítások Hardverközeli programozás 1 30
31 Digitális elektronikai alapok Félvezető Dióda, tranzisztor Logikai kapu Flip-flop Multiplexer, címdekódoló Összeadó áramkör
32 Félvezetők Rossz vezető, rossz szigetelő Ok: szilárdtestek sávszerkezete 4 vegyérték elektron (Si, Ge) Kvantumfizika Bohr-féle atommodell szilárdtestben atomban elektron energia elektron energia elektron energia elektron energia vezetési sáv tiltott sáv vegyérték sáv vezető félvezető szigetelő Hardverközeli programozás 1 32
33 Szennyezett félvezető n-szennyező(elektron) 5 vegyérték elektron (As, Sb) p-szennyező( lyuk ) 3 vegyérték elektron (Ga, In) Új energiaszint a tiltott sávban elektron energia Si Si Si Si As Si Si Si Si Si Si Si Si Ga Si Si Si Si n-típus p-típus Hardverközeli programozás 1 33
34 p-n átmenet Félvezető egykristály eltérően szennyezett részei között található Szabad töltéshordozók átáramlanak a másik rétegbe, rekombinálódhatnak. n p kiürített réteg töltéssűrűség + - elektrosztatikus potenciál potenciálgát Hardverközeli programozás 1 34
35 Dióda Záró irányú előfeszítés Nyitó irányú előfeszítés Dióda: egyenirányításra képes Jele: Speciális: LED Hardverközeli programozás 1 35
36 Tranzisztor 2 darab p-n átmenet ( összefordított diódák ) Kapcsoló, erősítő p n n p Bipoláris tranzisztor E B C Unipoláris tranzisztor D G S p n p p n p C S B E G n-csatornás JFET D Hardverközeli programozás 1 36
37 A logikai NAND kapu 2 bemenetű logikai kapu ( nem és ) Jele: Felépítése, működése: V cc A B TTL NAND kapu GND Q A B Q Hardverközeli programozás 1 37
38 További logikai kapuk Felépíthetőek NAND kapukból NOT AND OR XOR A Q A B Q A B Q A B Q Hardverközeli programozás 1 38
39 Flip-flopok Szekvenciális digitális elektronikai áramkör 1 bit információ tárolására képes Alkalmazás: regiszter, számláló, frekvenciaosztó D CLK Q _ Q CLK adat kimenet adat bemenet D flip-flop 4 bites regiszter Hardverközeli programozás 1 39
40 Kombinációs hálózat Multiplexer N jelből 1-et kiválaszt a vezérlőjelek alapján K darab vezérlőjel 2 K darab bemenő jelet tud azonosítani S 0 S 1 Z 0 0 A 0 1 B 1 0 C 1 1 D D C B A S 0 S 1 4:1 multiplexer Hardverközeli programozás 1 40 Z
41 Kombinációs hálózat Címdekódoló A címbemenetre adott jel alapján kiválasztja a kimenő jelek egyikét N bites címbemenetre adott érték a 2 N darab kimeneti vonal közül 1-et aktivál A 0 A 1 D 0 D 1 D 2 D A 0 A 1 D 0 D 1 D 2 D 3 2 bites címdekódoló Hardverközeli programozás 1 41
42 Összeadó áramkör Félösszeadó: 2 bit összeadására képes A B A B C S Teljes összeadó: 3 bit összeadására képes (2 félösszeadó) A B C i C o S C out Hardverközeli programozás 1 42 C S A B S C in
43 Ripple-carryösszeadó Több bites adatok összeadására képes Láncba fűzött teljes összeadók A 3 B 3 A 2 B 2 A 1 B 1 A 0 B C 0 S 3 S 2 S 3 S 2 A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 teljes összeadó c S 3 S 2 S 1 S 0 primitív 4 bites ALU kezdemény Hardverközeli programozás 1 43
44 A processzorok felépítése Számítógép architektúra CPU Regiszterek Fetch-execute ciklus RISC / CISC processzorok
45 Számítógép rétegmodell 0. szint: digitális logikai áramkörök (logikai kapu, flip-flop) 1. szint: mikro-architektúra (konkrét ALU, buszok) 2. szint: utasításkészlet architektúra (ISA) 3. szint: operációs rendszer (ütemezés, tárkezelés) 4. szint: programozási nyelvek (alkalmazások) Hardverközeli programozás 1 45
46 Neumann architektúra Princeton architektúra (Neumann János) Neumann elvek (1945): Elektronikus működés Kettes számrendszer használata Tárolt program elve Adat és program tárolás ugyanott/ugyanúgy Soros programvégrehajtás Univerzális felhasználhatóság Hardverközeli programozás 1 46
47 Harvard architektúra Külön adat és program memória Eltérő felépítés, címtartomány, típus is lehet Párhuzamos adat és utasítás elérés miatt nagyobb teljesítmény Főként mikrokontrollerekben használt Első alkalmazás: Mark I (1944) Módosított Harvard architektúra Külön adat/utasítás gyorsítótár, közös memória Modern CPU-k esetén elterjedt Hardverközeli programozás 1 47
48 A számítógép alapvető felépítése Processzor Memória Input-Output interfész Buszrendszer Perifériák Perifériák Processzor Memória I/O interfész Buszrendszer Hardverközeli programozás 1 48
49 Buszrendszer Busz (sín): vezetékek egy csoportja, amelyeken digitális jelet lehet továbbítani Buszrendszer logikai részei Címbusz: a címek bitsorozatának átvitelét biztosítja Adatbusz: adatok átviteléért felelős Vezérlő busz: részegységek működésének összehangolását segítő vezérlő jelek továbbítása címbusz adatbusz vezérlő busz Processzor Memória I/O interfész Hardverközeli programozás 1 49
50 Processzor Központi feldolgozó egység (CPU) A számítógép agya Vezérlés, utasítás végrehajtás Részei: Vezérlő egység (CU) Aritmetikai és logikai egység (ALU) Végrehajtó egység (EU) Címző egység (AU) és Busz illesztő egység (BIU) Regiszterek Belső gyorsítótár Hardverközeli programozás 1 50
51 Regiszterek Kis méretű (flip-flop-szerű) tároló áramkör Mérete általában az adatbusz szélességével egyenlő Általában bit Gyors hozzáférésű (elérési idő < 1ns) Darabszámát a processzor határozza meg (10-100) Gyakran regisztertömböket alkot Néha átnevezhetőek 3 kategória: Rendszer-, általános célú-és speciális célú regiszter Hardverközeli programozás 1 51
52 Regiszterek Programszámláló regiszter (PC vagy IP) A következő utasítás memóriacímét tartalmazza Az utasítás végrehajtása során (általában) átáll a következő utasítás címére, azaz az aktuális utasítás méretével növekszik Szekvenciális végrehajtás eszköze Értékét egyes utasítások is állíthatják (vezérlés átadás) Vezérlőegységhez (CU) kapcsolódik Hardverközeli programozás 1 52
53 Utasítás regiszter (IR) Regiszterek A memóriából beolvasott utasítás műveleti kódját tartalmazza A vezérlőegységhez kapcsolódik A CU ez alapján dönti el milyen műveletet kell végeztetni milyen adaton kell dolgozni (és az hol van) A programozó által nem hozzáférhető Hardverközeli programozás 1 53
54 Regiszterek Akkumulátor (ACC, W, AX) Általános munka regiszter az ALU-ban Aritmetikai és logikai műveletek operandusait tartalmazza legtöbbször Általában az ilyen műveletek eredménye is itt tárolódik Újabb processzorokban több hasonló regiszter ugyanerre a célra (kevesebb memória művelet) Általában egész típusú adatokat tartalmaznak Hardverközeli programozás 1 54
55 Regiszterek Állapot regiszter (SR, FLAGS) Processzor állapottal, művelet eredményével kapcsolatos jelző/vezérlő biteket tartalmaz Feltételes vezérlésátadásnál (is) nagyon fontos Átvitel (CF) Nibble átvitel (AF) Túlcsordulás (OF) Előjel (SF) Megszakítási maszk (IF) Nulla (ZF) Paritás (PF) Hardverközeli programozás 1 55
56 Regiszterek Verem mutató regiszter (SP) A hardveres rendszerverem használatához A verem tetejének memóriacímét tartalmazza Általában a verem előrefelé nő Általában SP a legutóbb betett elemet címzi (Intel) Speciális célú regiszter A push és pop művelet automatikusan változtatja az SP értékét Hardverközeli programozás 1 56
57 Regiszterek Címzéssel kapcsolatos speciális regiszterek Operandusok címének meghatározásánál egy alap címhez képesti relatív cím (eltolás) megadásához használható Az AU-hoz kapcsolódnak Tömbök, sztringekés lokális változók esetén hasznos Például: BP, X, SI, DI, CS, DS, SS, ES Hardverközeli programozás 1 57
58 Regiszterek Memória cím regiszter (MAR) Összeköti a külső és belső címbuszt Azt a címet tartalmazza, amelyhez legközelebb hozzá kell férni (írásra vagy olvasásra) A címző egység hajtja meg Címbusz szélességű Hardverközeli programozás 1 58
59 Regiszterek Memória adat regiszter (MDR) Összeköti a külső és belső adatbuszt Azt az adatot tartalmazza amelyet legközelebb ki kell írni a memóriába vagy amely legutóbb be lett olvasva a memóriából Kétirányú regiszter Adatbusz szélességű Hardverközeli programozás 1 59
60 Aritmetikai és logikai egység Számítási műveleteket végez Tartalmaz: fixpontos összeadót, komplemens képzőt, léptető regisztereket, bitenkénti logikai művelet végző, stb. áramköröket A operandus B operandus utasítás ALU állapot eredmény Hardverközeli programozás 1 60
61 Vezérlő egység Az IR-benlévő érték alapján irányítja, szabályozza a többi egység (pl. ALU) működését Fontos regiszterei: IR, PC, SR A vezérlés történhet Huzalozott logikával (közvetlenül) Minden utasításhoz létrehozott bonyolult digitális elektronika segítségével Mikroprogramozott(közvetett) módon Minden műveleti kód elindít egy apró (ROM-ban tárolt) mikroprogramot Hardverközeli programozás 1 61
62 Címző egység Addressing Unit (AU), Address Generation Unit (AGU) Az utasítások sokféle címzési mód segítségével határozhatják meg hol található az operandus Az AU az operandus címét állítja elő és helyezi el az MAR-ban Az utasításban található címet képezi le fizikai memóriacímre Tárolóvédelmi hibák felismerése Kapcsolat: BIU Hardverközeli programozás 1 62
63 Órajel Periodikus négyszög hullám Órajel generátor (oszcillátor) állítja elő Szinkronizálja az egységek működését Arányos a CPU által disszipált hővel Periódusidő nagyobb, mint a jelterjedési idő 1 MHz 3 GHz Gyakran változtatható (turbo, powersave) Egyéb sebesség jellemzők: MIPS, FLOPS Hardverközeli programozás 1 63
64 CISC processzor Komplex utasításkészletű számítógép Sok, összetett utasítás Sokféle címzési mód Változó hosszúságú utasítások Utasítás több gépi ciklust igényel Mikroprogramotott Kevés regiszter Utasítások elérhetik közvetlenül a RAM-ot Hardverközeli programozás 1 64
65 RISC processzor Csökkentett utasításkészletű számítógép Kevés, egyszerű utasítás Kevés címzési mód Állandó hosszúságú utasítások Utasítás egy gépi ciklust igényel Huzalozott vagy mikroprogramotott Sok regiszter Csak a Load/Storeutasítás éri el a RAM-ot Hardverközeli programozás 1 65
66 Fetch-Executeciklus 1. Utasítás beolvasása A PC-ben található érték megmondja, hol található a memóriában a következő utasítás. Ezt be kell olvasni az IR-be. 2. Dekódolás A beolvasott műveleti kódot értelmezni kell. Milyen művelet? Milyen adatokon? Eredmény hová kerül? Utasításkészlet architektúra (ISA) definiálja Lehet huzalozott vagy mikroprogramozott Hardverközeli programozás 1 66
67 Fetch-Executeciklus 3. Operandus beolvasása Az operandus címének meghatározása és onnan beolvasása a megfelelő regiszterbe 4. Művelet végrehajtása például az ALU által, az eredmény egy átmenti regiszterbe kerül 5. Eredmény tárolás regiszterbe vagy memóriacímre 6. Következő utasítás címének meghatározása Hardverközeli programozás 1 67
68 DIY Calculator esetén Olvasási ciklus C. Maxfield, A. Brown: The Official DIY Calculator Data Book Hardverközeli programozás 1 68
69 DIY Calculator esetén Írási ciklus C. Maxfield, A. Brown: The Official DIY Calculator Data Book Hardverközeli programozás 1 69
70 Assembly programozás Assembly nyelv Utasítás készlet Címzési módok Fordítás-szerkesztés-betöltés Gépi kód
71 Assembly programozás Alacsony absztrakciós szint Programozói szabadság Feladatra optimalizálható kód Nagyobb program teljesítmény Hardverismeret szükség Nehezebben átlátható kód PC, mikrokontroller Magasszintű programnyelvek Assembly programozás Gépi kód Hardverközeli programozás 1 71
72 Utasítás szerkezet 4 címes utasítás Műveleti kód 3 címes utasítás Műveleti kód 1. Operandus cím 1. Operandus cím 2. Operandus cím 2. Operandus cím Eredmény cím Eredmény cím Következő utasítás cím 2 címes utasítás Műveleti kód 1. Operandus cím 2. Operandus + eredmény cím 1 címes utasítás Műveleti kód 1. Operandus cím Hardverközeli programozás 1 72
73 Program és utasítás felépítés Forrás fájl utasítás_1 utasítás_2 utasítás_3 utasítás_4 utasítás_5 Címke Művelet Operandus(ok) Megjegyzés.L1: mov ax, 0 #zerotoax Címke Azonosító, általában kettősponttal zárul Művelet Az elvégzendő művelet mnemonic-ja Operandus(ok) Adat(ok) vagy adat(ok)ra hivatkozás(ok) Megjegyzés Sor végéig a fordító figyelmen kívül hagyja Hardverközeli programozás 1 73
74 Utasításkészlet architektúra ISA (Instruction Set Architecture) A számítógép programozáshoz kötődő részletei Bitszélesség (buszok és regiszterek) Regiszter készlet Gépi utasítások Címzési módok Memória architektúra Megszakítás kezelés Hardverközeli programozás 1 74
75 Utasítás típusok Adatmozgató utasítások (Egész) aritmetikai utasítások Bitenkénti logikai utasítások Bitléptető utasítások Vezérlésátadó utasítások Sztringkezelő utasítások BCD és valós aritmetikai utasítások Fordítási direktívák Egyéb utasítások Hardverközeli programozás 1 75
76 Utasítás típusok Adatmozgató utasítások Regiszter-regiszter (mov, xchg) Regiszter-memória (mov) Regiszter-I/O port (in, out) Regiszter-verem (push, pop) Kiterjesztés (bitszélesség fontos) (cbw, cwd) Státusz bit állítás (sti, cli) Hardverközeli programozás 1 76
77 Utasítás típusok Aritmetikai utasítások Összeadás (átvitel nélkül/átvitellel) (add, adc) Kivonás (átvitel nélkül/átvitellel) (sub, sbb) Inkrementálás, dekrementálás(inc, dec) Kettes komplemens(neg) Előjeltelen/előjeles szorzás (mul, imul) Előjeltelen/előjeles osztás (div, idiv) Összehasonlítás (cmp) Hardverközeli programozás 1 77
78 Utasítás típusok Bitenkénti logikai utasítások ÉS művelet (and) VAGY művelet (or) KIZÁRÓ VAGY művelet (xor) Egyes komplemens(not) Bit tesztelés (test) Hardverközeli programozás 1 78
79 Utasítás típusok Bitléptető utasítások Logikai/előjeltelen balra léptetés (shl) Logikai/előjeltelen jobbra léptetés (shr) Aritmetikai/előjeles balra léptetés (sal=shl) Aritmetikai/előjeles jobbra léptetés (sar) Jobbra/balra forgatás (ror, rol) Jobbra/balra forgatás carry-n keresztül (rcr, rcl) Hardverközeli programozás 1 79
80 Utasítás típusok Vezérlésátadó utasítások Feltétel nélküli ugrás (jmp) Feltételes ugrás (ja, jae, jb, jbe, je, jne, jc, jo, ) Ciklusszervező (loop, loopz, loopnz, ) Hívó utasítás (call) Szubrutinból visszatérés (ret) Szoftveres megszakítás kérés (int) Megszakítás-kezelőből visszatérés (iret) Hardverközeli programozás 1 80
81 Utasítás típusok Stringkezelő(byte-sorozat kezelő) utasítások Sztring mozgató (movs, movsb, movsw) Sztring összehasonlító (cmps) Keresés sztringben(scas) Egyéb utasítások Koprocesszor vezérlő (wait, esc) Rendszervezérlő (hlt) Üres utasítás (nop) Hardverközeli programozás 1 81
82 Utasítás típusok Fordítási direktívák: gépi kód nincs mögöttük, a fordítás menetét befolyásolják Forrásfájl lezárása (end) Szegmens definiálás (segment, ends) Egyszerűsített szegmensdefiníció (stack,.data) Helyfoglalás (db, dw, dd) Helyettesítő szimbólum létrehozás (equ) Hardverközeli programozás 1 82
83 Címzési módok Adat vagy utasítás hogyan érhető el. Rejtett (implicit, implied) Közvetlen adat megadás (immediate) Közvetlen cím (direct, absolute) Regiszteres cím (register direct) Közvetett cím (indirekt) Regiszter indirekt Indexelt cím Bázis relatív cím Hardverközeli programozás 1 83
84 Címzési módok Rejtett címzés Nincs igazi cím megadás Pl. ha nincs operandus Op.kód1 Op-kód2 Hardverközeli programozás 1 84
85 Címzési módok Közvetlen adat megadás Műveleti kód után közvetlenül található adat Ez lesz az operandus Op.kód Adat Hardverközeli programozás 1 85
86 Címzési módok Regiszteres címzés A műveleti kód hivatkozik egy regiszterre A regiszterben található az operandus értéke Op.kód regiszter Adat Hardverközeli programozás 1 86
87 Címzési módok Közvetlen cím Műveleti kód után található egy memóriacím Itt helyezkedik el az operandus Op.kód 731 Adat Hardverközeli programozás 1 87
88 Címzési módok Közvetett cím A műveleti kód után található egy cím Ezen a címen található az operandus igazi címe Op.kód Adat Hardverközeli programozás 1 88
89 Regiszter indirekt Címzési módok A műveleti kód hivatkozik egy regiszterre A regiszterben található címen helyezkedik el az operandus memóriacíme regiszter Op.kód 731 Adat Hardverközeli programozás 1 89
90 Indexelt Címzési módok A műveleti kód után található egy cím, ehhez hozzáadva az index regiszterben található értéket megkapjuk az operandus memóriacímét index reg Op.kód 731 Adat Hardverközeli programozás 1 90
91 Bázis relatív Címzési módok A műveleti kód után található egy eltolási érték, ehhez hozzáadva a bázis regiszterben található kezdőcímet megkapjuk az operandus címét bázis reg Op.kód 731 Adat Hardverközeli programozás 1 91
92 Gépi kód Az egyetlen nyelv, amit a processzor megért Bináris formátum Processzoronként változó lehet Példa: assembly: SUB EAX, EBX # eax = eax-ebx gépi kód: 0x29 0xD OpKód d s MOD REG R/M SUB művelet Regiszter a forrás 32 bites regiszter Regiszteres címzés Forrás: EBX Cél: EAX Hardverközeli programozás 1 92
93 Editor Programozás Szövegszerkesztőben forráskód létrehozása Forrás kód: háttértárolón tárolt szöveges file Esetleg nyelv érzékeny eszközrendszer Fordító (compiler, assembler) Előfeldolgozás, lexikai/szintaktikai/szemantikai elemzés, optimalizálás, kódgenerálás Eredmény: tárgykód (ojbectfile) Nem interpreter! Hardverközeli programozás 1 93
94 Programozás Kapcsolatszerkesztő (linker) A tárgykódban nem igazi címek, csak hivatkozások vannak (több fájl, könyvtári függv.) Linker feloldja a hivatkozásokat: futtatható fájl Betöltő (loader) Az op. rendszer része: létrehozza a folyamatot RAM-batölti a gépi kódot Inicializál: regiszterek, verem Átadja a vezérlést Hardverközeli programozás 1 94
95 Magasszintűprogramozás leképezése assembly-re 1. Programozás alapjai Kifejezéskiértékelés Elágaztatás Ciklusszervezés
96 Gondolatébresztő kérdések Melyik értékadás fut le rövidebb idő alatt? int a, b=2, c=3, d=4, e=1, f=2; a=(b+c)*(d-e)%f; a=(2+3)*(4-1)%2; a=5; Mi az alábbi kifejezés értéke? (!3+8==2*4)+-1 Mi az alábbi kifejezés típusa? 5/(short)2==.5+ 2 Hardverközeli programozás 1 96
97 Gondolatébresztő kérdések Ki/mikor/hogyan végzi a kifejezés kiértékelést? Van címe a konstansnak? Van-e különbség a #define és a const között? Kétirányú elágaztatásnak minősül-e az if (a==0) b=0; utasítás? Hányszor fut le az alábbi ciklus magja? for(a<1,b=1;c++;d=1) e=1; Hardverközeli programozás 1 97
98 A forráskód alkotórészei Karakterkészlet Lexikális egység Szintaktikai egység Utasítás Programegység Fordítási egység Program Komplexitás nő Hardverközeli programozás 1 98
99 Konstans (literál) Közvetlen adat megadás (immediate) Kódba épített adat 8, 16, 32, 64 bit szélességű Fix vagy lebegőpontos ábrázolás Magas szinten: 123, 1.25f, a Alacsony szinten: 0x b, 0x3fa00000, 0x61 Hardverközeli programozás 1 99
100 Nevesített konstans Komponensei: név, típus, érték #define abc 123 Előfordító kicseréli a nevet az értékre Kódba épített adat Assembly szinten egyszerű konstans const int abc=123; A fordító nem engedi a változtatást Assembly szinten egyszerű változó Hardverközeli programozás 1 100
101 Változó Komponensei: név, attribútum, cím, érték Hatáskör: statikus, dinamikus Deklaráció: explicit, implicit, automatikus Élettartam: statikus, dinamikus, programozó által vezérelt Értékadás: kezdőértékadás(automatikus, explicit), értékadó utasítás, paraméterátadás, input utasítás Hardverközeli programozás 1 101
102 Alacsony szinten Változó Adott méretű lefoglalt memóriaterület Ha van cím komponens mindig van érték is Érték: bitsorozat (tetszőleges értelmezéssel) Értékadás: memóriacímre adat mozgatás Statikus változó adat szegmensben Dinamikus változó verem szegmensben Programozó által vezérelt a heap-ben Mutató: előjel nélküli egész változó C-ben Hardverközeli programozás 1 102
103 Kifejezés Komponensei: típus, érték Formálisan: operátor, operandus és zárójel Operátor: uniáris, bináris, ternáris Alak: infix (2+3)*4 perfix * postfix(rpn) * Infix alak esetén nem egyértelmű kiértékelés: precendencia és kötésirány kell Típusegyenértékűség vagy típuskényszerítés Hardverközeli programozás 1 103
104 Kifejezés kiértékelés A kifejezés értékének, típusának meghatározása Konstans kifejezést a fordító értékel ki Nem konstans infix kifejezést a fordító postfix alakra hozza (figyelembe véve a zárójeleket, precedenciátés a kötésirányt) és az alapján állítja elő a gépi kódot imul ebx, ecx eax+ ebx* ecx& edx add eax, ebx and eax, edx Hardverközeli programozás 1 104
105 Deklarációs utasítás Utasítások Nem áll mögötte gépi kód A fordítóprogramnak szól Végrehajtható utasítás Egy magas szintű utasításból több gépi kódú utasítást is előállíthat a fordító Csoportjai: üres, értékadó, ugró, elágaztató, ciklusszervező, hívó, egyéb Hardverközeli programozás 1 105
106 Elágaztató utasítás Kétirányú elágaztató utasítás C nyelven: if (kifejezés) utasítás1; [else utatsítás2;] Többirányú elágaztató utasítás C nyelven: switch(kifejezés){ case egész_konstans_kif_1: [utasítás1;] [case egész_konstans_kif_2: [utasítás2;]] [default: utasítás3;] } Hardverközeli programozás 1 106
107 A feltételes utasítás alacsony szinten if(feltétel) utasítás1; utasítás2; if(feltétel) utasítás1; else utasítás2; utasítás3; cmp eax, ebx jne.l0 mov ecx, 1.L0: add edx, 1 cmp eax, ebx jne.l2 mov ecx, 1 jmp.l3.l2: mov ecx, 2.L3: add edx, 1 Hardverközeli programozás 1 107
108 A switchutasítás alacsony szinten switch(kifejezés){ casekifejezes1: utasítás1; case kifejezes2: utasítás2; default: utasítás3;} utasítás4; cmp eax, 1 je.l3 cmp eax, 2 je.l4 jmp.l2.l3: mov ebx, 1.L4: mov ebx, 2.L2: mov ebx, 3 add edx, 1 Hardverközeli programozás 1 108
109 A breakhatása alacsony szinten switch(kifejezés){ case1: utasítás1; break; case2: utasítás2; break; default: utasítás3;} utasítás4; cmp eax, 1 je.l3 cmp eax, 2 je.l4 jmp.l2.l3: mov ebx, 1 jmp.l5.l4: mov ebx, 2 jmp.l5.l2: mov ebx, 3.L5: add edx, 1 Hardverközeli programozás 1 109
110 Ciklusszervező utasítások Felépítés: fej + mag + vég Működés szempontjából: üres, normál, végtelen Fajtái: Feltételes Kezdőfeltételes Végfeltételes Előírt lépésszámú Előltesztelő Hátultesztelő Felsorolásos Végtelen Hardverközeli programozás 1 110
111 A C nyelv ciklusai Kezdőfeltételes (nem 0 feltétel esetén ismétel) while (feltétel) utasítás; for ([kif1]; [kif2]; [kif3]) utasítás; Végfeltételes (nem 0 feltétel esetén ismétel) do utasítás; while (feltétel); Hardverközeli programozás 1 111
112 A whileés forciklus alacsony szinten utasítás0; while(feltétel) utasítás1; utasítás2; mov eax, 10 jmp.l2.l3: sub eax, 1.L2: cmp eax, 0 jne.l3 add ebx, 1 A for és a while ciklus assembly szinten egyenértékű. Hardverközeli programozás 1 112
113 A do-whileciklus alacsony szinten utasítás0; do utasítás1; while(feltétel); utasítás2; mov eax, 10.L3: sub eax, 1 cmp eax, 0 jne.l3 add ebx, 1 A do-while ciklus nem lehet üres ciklus. Hardverközeli programozás 1 113
114 Magasszintűprogramozás leképezése assembly-re 2. Eljárás, függvény Lokális változó Paraméterátadás
115 Gondolatébresztő kérdések Hol vannak az hívott eljárás utasítási? Mi a kezdő memória címük? Hova kell átadni a vezérlést? Melyik utasítással kell folytatni a végrehajtást ha végeztünk az eljárással? Mi a címe a következő utasításnak? Hova kell átadni a vezérlést? Hol tárolódik a visszatérési cím? Hol van eltárolva a hívási lánc? 115
116 Gondolatébresztő kérdések Hogyan kerülnek át a paraméterek az alprogramba? Hogyan kerül vissza a hívóhoz a visszatérési érték? Ismersz-e változó paraméterszámú függvényt? Hol van tárolva a lokális változó? A memória melyik részén helyezkedik el? Miért dinamikus az alap változó élettartama? Miben különbözik a static változótól? 116
117 Gondolatébresztő kérdések Melyik program a gyorsabb? Miért? #include<math.h> int main(){ int a,b=-23; a=abs(b); return 0;} #define abs(x) ((x)<0)?(-1*(x)):(x) int main(){ int a,b=-23; a=abs(b); return 0;} 117
118 Gondolatébresztő kérdések Mit ír az alábbi program a képernyőre? #include<stdio.h> int b=2; void one(int a){ a=a+1;} int main(){ one(b); printf( %d %d\n,a,b); return 0;} 118
119 Gondolatébresztő kérdések Hányszor fut le az eljárás? #include<stdio.h> void one(int a){ if(a>0) one(a-1); } int main(){ one( ); return 0; } 119
120 Gondolatébresztő kérdések Mit csinál a program? #include<stdio.h> void one(){ int T[ ]; T[12345]=67; printf( %d,t[12345]); } int main(){ one(); return 0; } 120
121 Gondolatébresztő kérdések Mit ír az alábbi program a képernyőre? #include<stdio.h> void one(){ int a=-43;} void two(){ int b; printf( %d\n,b);} int main(){ one(); two(); return 0;} 121
122 Alprogram Az újra felhasználhatóság és a procedurális absztrakció eszköze Komponensei: Név Formális paraméterlista Törzs Környezet Fajtái: Eljárás Függvény 122
123 Eljárás Tevékenységet hajt végre Aktivizálás utasításszerűen lehet Befejezés a törzs végére érve vagy befejeztető utasítással Folytatás a hívás utáni utasítással void procedure(int a, char b){ printf( %d %c,a,b); } // C nyelven nincs eljárás procedure(3, A ); 123
124 Értéket határoz meg Aktivizálás kifejezésben Függvény Befejezés általában befejeztető utasítás révén visszatérési érték megadásával Folytatás a kifejezés kiértékelésnél int function(int a, char b){ return a+b; } x=2*function(3, A )+1; 124
125 LastInFirstOut tároló A verem Tetejének a memóriacímét a verem mutató regiszter (SP) tárolja Pushés Pop művelet A verem mérete korlátos Veremhez gyakran hozzá kell férni Általában gyorsítótárazott(cache) Adat kivétele nem fizikai törlés Külön memóriaszegmensben van 125
126 Eljárás hívás alacsony szinten PC SP RAM: hívó_utasítása_1 hívó_utasítása_2 eljárás_hívás hívó_utasítása_3 hívott_utasítása_1 hívott_utasítása_2 befejeztetés old_pc 126
127 Hívási lánc Az alprogramok hívhatnak újabb alprogramokat, azok továbbiakat, A visszatérési címek folyamatosan a verem tetejére kerülnek (A verem mérete nő.) A hívási lánc dinamikusan épül fel, bomlik le A lánc miden tagja aktív, de csak a legutóbbi működik Rekurzió: egy aktív alprogram meghívása 127
128 Lokális változók Az programegységben deklarált nevek (változók) a programegység lokális nevei (változói). C nyelvnél (alapesetben): Statikus hatáskörkezelés Dinamikus élettartam kezelés Nincs automatikus kezdőérték 128
129 Lokális változó alacsony szinten Az alprogramba lépéskor a verem tetején a visszatérési cím található A verembe mentjük a bázis regiszter értékét A veremmutató (SP) értékét átmásoljuk a bázis regiszterbe (BP) Átállítva a veremmutató értékét hagyunk helyet a lokális változók számára a veremben A verem nem csak FIFO módon kezelhető A lokális változók bázis relatív címzéssel elérhetőek 129
130 Lokális változó alacsony szinten void eljar(){ int a=1; int b=2; int c=3; * } * A RAM tartalma: ??? esp= a=1 b=2 c=3 [ebp-12] [ebp-8] [ebp-4] 750 régi ebp ebp= ret. cím Hardverközeli programozás 1 130
131 Lokális változó alacsony szinten eljar: push ebp mov ebp, esp sub esp, 16 mov DWORD PTR [ebp-12], 1 mov DWORD PTR [ebp-8], 2 mov DWORD PTR [ebp-4], 3 mov esp, ebp pop ebp ret Hardverközeli programozás 1 131
132 Paraméter kiértékelés Formális- és aktuális paraméter összerendelés Sorrendi kötés Név szerinti kötés Számbeli egyeztetés Azonos paraméterszám Eltérő paraméterszám Típusegyeztetés Típusegyezés Típus konverzió 132
133 Paraméterátadás Érték szerinti Cím szerinti Eredmény szerinti Érték-eredmény szerinti Név szerinti Szöveg szerinti Az adatmozgás iránya fontos C nyelvben: csak érték szerinti paraméterátadás 133
134 Érték szerinti paraméterátadás Formális paraméternek van címkomponense a hívott területén. Aktuális paraméternek van érték komponense. Az aktuális paraméter értéke átkerül a hívott alprogram területén lefoglalt címkomponensre. Az információátadás egy irányú. Az alprogram a saját területén dolgozik. Ahívottalprogramnemtudjaholvanahívó. 134
135 Függvényhívás alacsony szinten 1. A hívó a verembe teszi az aktuális paramétereket fordított (!) sorrendben. (sorrendi kötés, számbeli egyeztetés) 2. A verembe bekerül a visszatérési cím (PC aktuális értéke). 3. PC megkapja a hívott alprogram kezdőcímét. 4. Szekvenciálisan lefutnak a hívott utasításai. Hívott alprogram felhasználja a veremben lévő paramétereket (bázis relatív, lokális változó). Meghatározódik a visszatérési érték. 135
136 Függvényhívás alacsony szinten 5. Verembe visszatérési érték betétele (a visszatérési cím alá). 6. Veremből visszatérési cím (hívást követő utasítás címe) kivétele. 7. Vezérlés visszaadása a megadott címre (lásd 5. pont). 8. Visszatérési érték kivétele a veremből. 9. Paraméterek kitakarítása a veremből. 10. Végrehajtás folytatása a következő utasítással. 136
137 Függvényhívás alacsony szinten Egyes esetekben a paraméterek meghatározott sorrendben regiszterekbe kerülnek, itt adódnak át. (El kell menteni a korábbi tartalmat) a visszatérési értéket az egyik regiszteren keresztül adjuk vissza A paraméterek kitakarítása a veremből lehet a hívó vagy a hívott feladata is Hardverközeli programozás 1 137
138 Példa C nyelven int fuggv(int c){ int a; a=c+1; * return a; } int main(int argc, char *argv[]){ int a, b; a=argc; b=fuggv(a); return b; } * A RAM tartalma: fuggv: c fuggv: a régi ebp visszatér. cím param. main: a main: b ősi ebp esp=726 [ebp-8] [ebp-4] ebp=734 [ebp+4] [ebp+8] [ebp+12] [ebp+16] [ebp+20] Hardverközeli programozás 1 138
139 Példa assembly-ben#1 fuggv: push rbp mov rbp, rsp sub rsp, 8 mov eax, DWORD PTR [rbp+16] mov DWORD PTR [rbp-8], eax mov eax, DWORD PTR [rbp-8] add eax, 1 mov DWORD PTR [rbp-4], eax mov eax, DWORD PTR [rbp-4] mov DWORD PTR [rbp+16], eax mov rsp, rbp pop rbp ret Hardverközeli programozás 1 139
140 Példa assembly-ben#2 main: push rbp mov rbp, rsp sub rsp, 8 mov DWORD PTR [rbp-8], edi mov eax, DWORD PTR [rbp-8] push rax call fuggv pop rax mov DWORD PTR [rbp-4], eax mov eax, DWORD PTR [rbp-4] mov rsp, rbp pop rbp ret Hardverközeli programozás 1 140
141 Cím szerinti paraméterátadás Formális paraméternek nincs címkomponense a hívott területén. Aktuális paraméternek van cím komponense a hívó területén. Az aktuális paraméter címe átkerül a hívott alprogramhoz, aki itt dolgozik. Az információátadás két irányú. Az alprogram a hívó területén dolgozik. Gyorsabb, de veszélyesebb. 141
142 Megszakítási rendszer és input/output Megszakítás, kivétel Megszakításkezelés Input/output Buszrendszerek, perifériák
143 Szükségesség Az általános célú számítógépek fontos képessége, hogy kölcsön hat az I/O eszközökkel (billentyűzet, egér, hálózati interfész, monitor). Ezek ez eszközök azonnali választ várnak a processzortól, függetlenül attól mivel foglalkozik éppen. Váratlanul bekövetkező eseményekre a CPU-nak reagálnia kell. A megszakítás szolgál a CPU figyelmének felhívására. Hardverközeli programozás 1 143
144 Megszakítás Speciális jelzés a CPU számára Egy esemény bekövetkeztét jelzi Azonnal reagálni kell rá A normál végrehajtást meg kell szakítani Később tudni kell folytatni Forrás Hardver Processzor Szoftver Hardverközeli programozás 1 144
145 Megszakítás típusok Aszinkron Külső forrásból (például I/O eszköz) származik Független az aktuálisan végrehajtott utasítástól Szinkron (másként kivétel ) Processzor által érzékelt kivétel Hiba: kijavítható probléma, újra próbálkozás Csapda: pl. nyomkövetésnél Elvetés: jelentős, javíthatatlan (hardver) hiba Programozott kivétel (rendszerhívás) Hardverközeli programozás 1 145
146 Megszakítási vonal Fogalmak Egy (vagy több) CPU vezérlő busz vezeték Megszakítási kérelem (IRQ) A megszakítások egész számokkal (0-255) azonosíthatók Lehet prioritásuk Programozható megszakítás vezérlő (PIC, APIC) Azonosítja a megszakítás forrását, aktiválja a megszakítási vonalat, kezeli prioritásokat Hardverközeli programozás 1 146
147 Megszakítási rutin (ISR) Fogalmak Az a programrész, amely megszakítási kérelem esetén aktiválódik, kezeli a speciális helyzetet Hívás nélküli alprogramhoz hasonlít Kontextus Ahhoz, hogy folytatni tudjuk a normál végrehajtást a kivételkezelés után először el kell menteni, majd vissza kell állítani az eredeti környezetet, regisztertartalmakat Hardverközeli programozás 1 147
148 Maszkolás Fogalmak Egyes megszakítási kérelmek figyelése kikapcsolható Egyszerre, globálisan, processzorban Külön-külön, a PIC-ben lévő IMR segítségével Vannak nem maszkolható megszakítások (NMI) Nested interrupt( fészkelt megszakítás ) Megszakítási rutint megszakító újabb IRQ Megszakítás megszakítása Hardverközeli programozás 1 148
149 Megszakításkezelés Utasítás beolvasás Utasítás dekódolás Kontextus mentés Utasítás végrehajtás Eszköz azonosítás nem Megszakítás? Rutin (ISR) keresés igen igen NMI? nem Maszk tilt? igen nem Rutin (ISR) végrehajtás Kontextus visszaállítás Hardverközeli programozás 1 149
150 Megszakításkezelési technikák Vektoros megszakításkezelés Megszakítási vonal aktiválás A megszakítás kérő azonosítja magát Adatbuszon egyedi kódot/címet küld Lekérdezéses (polling) megszakításkezelés Megszakítási vonal aktiválás A CPU sorozatos lekérdezésekkel kideríti kinek van megszakítási igénye Hardverközeli programozás 1 150
151 Megszakításkezelési technikák Vektoros megszakításkezelés IRQ n ISR 1 címe ISRncíme vektor Lekérdezéses megszakításkezelés IRQ megszakítás lekérdező eljárás programkódja ISR 1 programkódja ISR 1 programkódja ISR n programkódja ISR n programkódja Hardverközeli programozás 1 151
152 Input/Output Kapcsolat a külvilággal Hardveres I/O interfészek Szoftver interfész (device driver) Perifériás eszközök Periféria 1 Periféria 2 buffer buffer Processzor Memória Külső buszok I/O interfészek Rendszer busz Hardverközeli programozás 1 152
153 Input/output interfészek Kapcsolat a CPU és a perifériák között Címezhető eszközök Memóriára leképezett I/O (MMIO) Portra leképezett I/O (PMIO) Különböző adatsebesség Különböző fizikai jelek Soros átvitel Párhuzamos átvitel Az eszközvezérlés nem a CPU feladata Hardverközeli programozás 1 153
154 Programozott I/O (PIO) I/O technikák Speciális I/O utasításokkal (in, out) A program írja le mikor kell a perifériához fordulni (függetlenül annak állapotától) Utasításonként csak egy szó átvitele az I/O buffer és a CPU regiszterei között I/O adat és címregiszterek a CPU-ban Sok CPU időt felemészt az eszközök állapotának sorozatos elkérdezése Hardverközeli programozás 1 154
155 Megszakítás vezérelt I/O I/O technikák A periféria megszakításokkal jelez a CPU-nak Ha van új input vagy Ha kész van az outputtal A CPU nem figyel folyamatosan Közben tud mással foglalkozni Az adatmozgás a CPU és az I/O modul között történik Hardverközeli programozás 1 155
156 I/O technikák Direkt memória hozzáférés (DMA) Külön vezérlő révén közvetlen RAM-I/O kapcsolat (RAM-RAM, RAM-I/O) A CPU kéri fel a DMA vezérlőt a műveletre Ha a DMA vezérlő kész van megszakítást kér CPU nem vesz részt az adatmozgatásban Blokkos átviteli mód I/O processzor (IOP) DMA kiterjesztése nagyobb önállósággal Hardverközeli programozás 1 156
157 Buszrendszerek Párhuzamos ISA PCI ATA (ATAPI, UATA, IDE) VESA Local Bus(VLB) SCSI AGP Soros I 2 C PCI Express Serial ATA USB Serial Attached SCSI FireWire Hardverközeli programozás 1 157
158 PCI busz Peripheral Component Interconnect Párhuzamos belső busz Sínszélesség: 32 vagy 54 bit Átviteli sebesség: MB/s Fejlesztés: Külön vezérlőáramkör szükséges Forrás: en.wikipedia.org/wiki/conventional_pci Hardverközeli programozás 1 158
159 PCIebusz Peripheral Component Interconnect Express Soros belső busz 1 link 1, 2, 4, 8, 16 vagy 32 sávból áll Átviteli sebesség: MB/s Fejlesztés: Minden eszköznek külön link (nem osztoznak) Forrás: en.wikipedia.org/wiki/pci_express Hardverközeli programozás 1 159
160 (Parallel) ATA busz (Parallel) AT Attachment Párhuzamos belső busz Szinonimák : PATA, ATAPI, UATA, IDE, EIDE Átviteli sebesség: 3,3-166 MB/s Fejlesztés: HDD, FDD, CD és DVD meghajtó csatlakoztatás Forrás: en.wikipedia.org/wiki/parallel_ata Hardverközeli programozás 1 160
161 SerialATA Soros belső busz Pont-pont kapcsolat SATA busz Átviteli sebesség: MB/s Fejlesztés: HDD, SSD, CD és DVD meghajtó csatlakoztatás Forrás: hu.wikipedia.org/wiki/serial_ata Hardverközeli programozás 1 161
162 Universal Serial Bus Soros külső busz USB busz Plug-and-Play, elosztható (hub) Átviteli sebesség: 0, MB/s Fejlesztés: Csatlakozók: standard-a, standard-b, mini-a, mini-b, micro-a, micro-b Forrás: en.wikipedia.org/wiki/usb Hardverközeli programozás 1 162
163 Vezérlő hub-ok Az alaplap fontos chip-jei Northbridge(memóriavezérlő hub) Southbridge(I/O vezérlő hub) CPU AGP RAM Northbridge Southbridge BIOS PCI IDE USB LAN I/O Hardverközeli programozás 1 163
164 Device Driver Eszköztípusok Eszközmeghajtó Karakteres, blokkos, hálózati, egyéb A programok hardvertől független rendszerhívásokat alkalmaznak open, read, write, close, Az eszközmeghajtók töltik meg ezt konkrét hardver specifikus tartalommal Hardverközeli programozás 1 164
165 Perifériák Input Billentyűzet Egér Szkenner Kamera Tároló Háttértár (HDD, SSD) CD/DVD/Blu-ray USB tároló Memória kártya Output Monitor Nyomtató Projektor Audio rendszer Hálózat Ethernet kártya Wi-Fi kártya Hardverközeli programozás 1 165
166 Adattárolás Operatív memória Cache Háttértárak
167 Tárolók osztályzása Írhatóság szempontjából Csak olvasható, olvasható-írható Hierarchiabeli helye szerint Elsődleges, másodlagos, harmadlagos Tárolási közeg szerint Félvezető, mágneses, optikai Adatmegőrzés szerint Megmaradó, nem megmaradó Elérés szerint Soros elérésű, tetszőleges elérésű Hardverközeli programozás 1 167
168 Elsődleges memória A processzor és a futó programok által aktívan használt tároló Gyors elérésű Nem maradandó memória Méret erősen korlátos Ide tartoznak Regiszterek Gyorsítótárak Operatív memória Hardverközeli programozás 1 168
169 Másodlagos memória Háttértároló Az elsődleges memória kiterjesztése Nagy tároló kapacitás Kisebb elérési sebesség Maradandó tárolás Ide tartoznak HDD, SDD CD-, DVD-meghajtó Memóriakártya Hardverközeli programozás 1 169
170 Harmadlagos memória Többnyire eltávolítható adathordozókra épít Robotikuseszközök csatlakoztatják a kívánt tároló médiumot ( wurlitzer ) Ritka hozzáférés Óriási tároló kapacitás Cél hosszú távú archiválás Ide tartoznak Mágnesszalagos tárolók Optikai tárolók Hardverközeli programozás 1 170
171 Félvezető memóriák Read-Only Memory(ROM) Gyártás során kerül bele a tartalom, ami később nem változtatható Tartalmat sokáig megőrzi, tápfeszültség hiányában is Programable Read-Only Memory(PROM) Gyártás után üres. Speciális eszközzel egyszer beégethető a tartalom Az írás folyamata lassú (a RAM-hoz képest) Hardverközeli programozás 1 171
172 Félvezető memóriák Erasable Programable ROM (EPROM) Erős UV fénnyel (lassan) törölhető a tartalom Majd ismét újraírható Electrically Erasable Programable ROM (EEPROM) Elektronikusan, bájtonként törölhető tartalom Flash memória Speciális továbbfejlesztett EEPROM Blokkonként (gyorsabban) törölhető Hardverközeli programozás 1 172
173 Félvezető memóriák Random Access Memory(RAM) Véletlen elérés Elérési idő nem függ az elhelyezkedéstől Írható/olvasható tetszőleges számban Elveszti a tartalmát tápfeszültség hiányában Nagy írási/olvasási sebesség Static Random Access Memory(SRAM) Frissítés nélkül is megtartja a flip-flipokban a tartalmat a tápellátás megszűnéséig (pl. cache) Hardverközeli programozás 1 173
174 Félvezető memóriák Dynamic Random Access Memory(DRAM) Rendszeresen frissíteni kell, hogy a kondenzátor révén tárolt információ megmaradjon SRAM-nál lassabb (pl. operatív tár) Olyan gyorsan válaszol ahogy tud Syncronous Dynamic RAM (SDRAM) Órajellel szinkronizált válasz Gyorsabb az aszinkron DRAM-nál(pipeline működés) Hardverközeli programozás 1 174
175 Félvezető memóriák Double Data Rate(DDR) Gyorsított SDRAM Az órajel fel és leszálló élére is szinkronizál DDR2, DDR3, DDR4 Egyre nagyobb sebesség Egyre nagyobb adatsűrűség Egyre kisebb feszültség Nem kompatibilis DIMM (SDRAM, DDR, DDR2, DDR3, DDR3) Hardverközeli programozás 1 175
176 Gyorsítótár Egyes eszközök rendszeresen adatot cserélnek Az eszközök adatátviteli sebessége nagyon eltér A lassú eszköz miatt a gyors is lelassul Pl. a CPU kb. 10-szer gyorsabb a RAM-nál Megoldási ötlet Köztes tároló beiktatása (cache) Gyorsabb, mint a lassú eszköz (SRAM, közeli) Magas ára miatt teljesen nem helyettesíti a lassút Létjogosultság: lokalitási elvek Hardverközeli programozás 1 176
177 Térbeli lokalitás elve Gyorsítótár Ha egy program hivatkozik egy memóriacímre (adat vagy utasítás), akkor nagy valószínűséggel hamarosan hivatkozik a szomszédos címekre is Szekvenciális végrehajtás, tömbök Időbeli lokalitás elve Ha egy program hivatkozik egy memóriacímre, akkor nagy valószínűséggel hamarosan ismét hivatkozik rá Ciklusok Hardverközeli programozás 1 177
178 Gyorsítótár Leggyakrabban használt adatok tárolása Kisebb tárolókapacitás, gyorsabb elérés (SRAM), mint az operatív memória esetén Átlátszóak a felhasználó számára Asszociatív (CAM) memóriát tartalmaz CPU cache, GPU cache, Web cache, DNS cache CPU cache Többszintű: L1, L2, L3 cache On-chip vagy off-chip Hardverközeli programozás 1 178
179 Gyorsítótárfelépítése A tárolás egysége a Sor A Sor részei a Tag (toldalék) és a Blokk A Tag tartalmazza a Blokk főtárbeli címét és egyéb vezérlő információkat A Blokk a főtár egy részének a másolata CPU Cache Tag Blokk 128 DEF 131 MNO 129 GHI RAM ABC 127 DEF 128 GHI 129 JKL 130 MNO 131 Hardverközeli programozás 1 179
Bevezetés a számítástechnikába
Bevezetés a számítástechnikába, Címzési módok, Assembly Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 2/9. ú utasítás
RészletesebbenSzámítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd SZE MTK MSZT lovas.szilard@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? Nem reprezentatív felmérés kinek van
Részletesebben1. Az utasítás beolvasása a processzorba
A MIKROPROCESSZOR A mikroprocesszor olyan nagy bonyolultságú félvezető eszköz, amely a digitális számítógép központi egységének a feladatait végzi el. Dekódolja az uatasításokat, vezérli a műveletek elvégzéséhez
RészletesebbenA Számítógépek felépítése, mőködési módjai
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek felépítése, mőködési módjai Mikroprocesszoros Rendszerek Felépítése Buszrendszer CPU OPERATÍV TÁR µ processzor
RészletesebbenDigitális technika VIMIAA01
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 Fehér Béla BME MIT Digitális Rendszerek Számítógépek
RészletesebbenMiért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?
és szerkezete Így kényelmes programozni int sum = 0; for( int i=0; i
RészletesebbenSzámítógép Architektúrák
Számítógép Architektúrák Utasításkészlet architektúrák 2015. április 11. Budapest Horváth Gábor docens BME Hálózati Rendszerek és Szolgáltatások Tsz. ghorvath@hit.bme.hu Számítógép Architektúrák Horváth
RészletesebbenGábor Dénes Főiskola Győr. Mikroszámítógépek. Előadás vázlat. 2004/2005 tanév 4. szemeszter. Készítette: Markó Imre 2006
Gábor Dénes Főiskola Győr Mikroszámítógépek Előadás vázlat 102 2004/2005 tanév 4. szemeszter A PROCESSZOR A processzorok jellemzése A processzor felépítése A processzorok üzemmódjai Regiszterkészlet Utasításfelépítés,
RészletesebbenBevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa
Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C programozási nyelvbe Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Oktatási segédletek a levelező műszaki informatikus hallgatók
RészletesebbenAssembly utasítások listája
Assembly utasítások listája Bevezetés: Ebben a segédanyagban a fontosabb assembly utasításokat szedtem össze. Az utasítások csoportosítva vannak. A fontos kategóriába azok az utasítások tartoznak, amiknek
RészletesebbenA MiniRISC processzor
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK A MiniRISC processzor Fehér Béla, Raikovich Tamás, Fejér Attila BME MIT
RészletesebbenA számítógép alapfelépítése
Informatika alapjai-6 számítógép felépítése 1/8 számítógép alapfelépítése Nevezzük számítógépnek a következő kétféle elrendezést: : Harvard struktúra : Neumann struktúra kétféle elrendezés alapvetően egyformán
RészletesebbenASSEMBLY PROGRAMOZÁS TANTÁRGYHOZ SZÜKSÉGES ELŐISMERETEK ISMÉTLÉSE
ASSEMBLY PROGRAMOZÁS TANTÁRGYHOZ SZÜKSÉGES ELŐISMERETEK ISMÉTLÉSE Dr. Varga Imre Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék 2019. augusztus 31. A C programozási nyelv alapos ismerete
RészletesebbenKözlekedés gépjárművek elektronikája, diagnosztikája. Mikroprocesszoros technika. Memóriák, címek, alapáramkörök. A programozás alapjai
Közlekedés gépjárművek elektronikája, diagnosztikája Mikroprocesszoros technika. Memóriák, címek, alapáramkörök. A programozás alapjai TÁMOP-2.2.3-09/1-2009-0010 A Széchenyi István Térségi Integrált Szakképző
RészletesebbenEgyszerű RISC CPU tervezése
IC és MEMS tervezés laboratórium BMEVIEEM314 Budapesti Műszaki és Gazdaságtudományi Egyetem Egyszerű RISC CPU tervezése Nagy Gergely Elektronikus Eszközök Tanszéke (BME) 2013. február 14. Nagy Gergely
RészletesebbenA mikroszámítógép felépítése.
1. Processzoros rendszerek fő elemei mikroszámítógépek alapja a mikroprocesszor. Elemei a mikroprocesszor, memória, és input/output eszközök. komponenseket valamilyen buszrendszer köti össze, amelyen az
Részletesebben1. ábra: Perifériára való írás idődiagramja
BELÉPTETŐ RENDSZER TERVEZÉSE A tárgy első részében tanult ismeretek részbeni összefoglalására tervezzük meg egy egyszerű mikroprocesszoros rendszer hardverét, és írjuk meg működtető szoftverét! A feladat
RészletesebbenDigitális rendszerek. Utasításarchitektúra szintje
Digitális rendszerek Utasításarchitektúra szintje Utasításarchitektúra Jellemzők Mikroarchitektúra és az operációs rendszer közötti réteg Eredetileg ez jelent meg először Sokszor az assembly nyelvvel keverik
RészletesebbenMikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység
Mikroprocesszor CPU C Central Központi P Processing Számító U Unit Egység A mikroprocesszor általános belső felépítése 1-1 BUSZ Utasítás dekóder 1-1 BUSZ Az utasítás regiszterben levő utasítás értelmezését
RészletesebbenDigitális technika II., 2009/2010 tavasz 1. vizsga 2010.06.01. A csoport
Beugró kérdések: 1. USART jelalak (TdX) felrajzolása adott paritás és adott számú STOP bit mellett egy kétjegyű hexa szám átvitelére. 2. RST7.5, TRAP és INT megszakítási bemenetek összehasonlítása tilthatóság
RészletesebbenStack Vezérlés szerkezet Adat 2.
Stack Vezérlés szerkezet Adat 2. Kód visszafejtés. Izsó Tamás 2013. november 14. Izsó Tamás Stack Vezérlés szerkezet Adat 2./ 1 Változó típusú paraméterekátadása 1. #include < s t d i o. h> int64 myfunc
RészletesebbenAssembly. Iványi Péter
Assembly Iványi Péter További Op. rsz. funkcionalitások PSP címének lekérdezése mov ah, 62h int 21h Eredmény: BX = PSP szegmens címe További Op. rsz. funkcionalitások Paraméterek kimásolása mov di, parameter
RészletesebbenAz integrált áramkörök kimenetének kialakítása
1 Az integrált áramörö imeneténe ialaítása totem-pole three-state open-olletor Az áramörö általános leegyszerűsített imeneti foozata: + tápfeszültség R1 V1 K1 imenet V2 K2 U i, I i R2 ahol R1>>R2, és K1,
Részletesebben[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]
Szoftver fejlesztés Egy adott mikroprocesszoros rendszer számára a szükséges szoftver kifejlesztése több lépésből áll: 1. Forrás nyelven megírt program(ok) lefordítása gépi kódra, amihez megfelelő fejlesztő
RészletesebbenAssembly Rekurzív függvények, EXE, C programok. Iványi Péter
Assembly Rekurzív függvények, EXE, C programok Iványi Péter Algoritmusok előadás Rekurzív függvény FÜGGVÉNY nyomtat(n) print n HA n!= 0 nyomtat(n-1) ELÁGAZÁS VÉGE FÜGGVÉNY VÉGE Rekurzív függvény org 100h
RészletesebbenA regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani.
1. Regiszterek A regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani. Általános célú regiszterek AX akkumulátor: aritmetikai
RészletesebbenSzámítógép Architektúrák I-II-III.
Kidolgozott államvizsgatételek Számítógép Architektúrák I-II-III. tárgyakhoz 2010. június A sikeres államvizsgához kizárólag ennek a dokumentumnak az ismerete nem elégséges, a témaköröket a Számítógép
RészletesebbenSzéchenyi István Szakképző Iskola
A SZAKKÖZÉPISKOLAI SZAKMACSOPORTOS ALAPOZÓ OKTATÁS EMELT SZINTŰ ISKOLAI PROGRAMJA 11-12. évolyam Érvényes a 2003-2004-es tanévtől felmenő rendszerben Átdolgozva, utolsó módosítás: 2004. április 26. Az
RészletesebbenArchitektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
RészletesebbenGÁBOR DÉNES FŐISKOLA PREZENTÁCIÓ. Vezetőtanár: Ágoston György 2002/2003 6. szemeszter. 222 lap
GÁBOR DÉNES FŐISKOLA PREZENTÁCIÓ Vezetőtanár: Ágoston György 2002/2003 6. szemeszter 222 lap 1. oldal A vezetőtanár: Ágoston György tel: (1) 436-6556 e-mail: agoston@gdf-ri.hu A GDF hivatalos honlapja:
RészletesebbenSzámítógép Architektúrák (MIKNB113A)
PANNON EGYETEM, Veszprém Villamosmérnöki és Információs Rendszerek Tanszék Számítógép Architektúrák (MIKNB113A) 4. előadás: Utasítás végrehajtás folyamata: címzési módok, RISC-CISC processzorok Előadó:
RészletesebbenSzámítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd, Krankovits Melinda SZE MTK MSZT kmelinda@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? 2 Nem reprezentatív felmérés
RészletesebbenSzámítógép architektúrák I. Várady Géza varadygeza@pmmik.pte.hu
Számítógép architektúrák I. Várady Géza varadygeza@pmmik.pte.hu 1 Bevezetés - fogalmak Informatika sokrétű Információk Szerzése Feldolgozása Tárolása Továbbítása Információtechnika Informatika a technikai
RészletesebbenELŐADÁS 2016-01-05 SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA
ELŐADÁS 2016-01-05 SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA A PC FIZIKAI KIÉPÍTÉSÉNEK ALAPELEMEI Chip (lapka) Mikroprocesszor (CPU) Integrált áramköri lapok: alaplap, bővítőkártyák SZÁMÍTÓGÉP FELÉPÍTÉSE
RészletesebbenA 32 bites x86-os architektúra regiszterei
Memória címzési módok Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
RészletesebbenMérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.
Mérési útmutató A/D konverteres mérés 1. Az A/D átalakítók főbb típusai és rövid leírásuk // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait. Csoportosítás polaritás szempontjából:
RészletesebbenAdatelérés és memóriakezelés
Adatelérés és memóriakezelés Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
RészletesebbenMemóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)
Memóriák (felejtő) Memória Kapacitás Ár Sebesség Memóriák - tárak Háttértár (nem felejtő) Memória Vezérlő egység Központi memória Aritmetikai Logikai Egység (ALU) Regiszterek Programok Adatok Ez nélkül
Részletesebben2. Digitális hálózatok...60
2 60 21 Kombinációs hálózatok61 Kombinációs feladatok logikai leírása62 Kombinációs hálózatok logikai tervezése62 22 Összetett műveletek használata66 z univerzális műveletek alkalmazása66 kizáró-vagy kapuk
RészletesebbenSzámítógépek. 2.a) Ismertesse a kombinációs hálózatok alapelemeit és a funkcionálisan teljes rendszer
Számítógépek 1.a) Ismertesse az információ analóg és digitális leképzésének lehetőségeit, a számrendszereket és a gyakoribb kódrendszereket! Jellemezze a logikai függvényeket, és mutassa be az egyszerűsítési
RészletesebbenAssembly Utasítások, programok. Iványi Péter
Assembly Utasítások, programok Iványi Péter Assembly programozás Egyszerű logikán alapul Egy utasítás CSAK egy dolgot csinál Magas szintű nyelven: x = 5 * z + y; /* 3 darab művelet */ Assembly: Szorozzuk
RészletesebbenInformációs Technológia
Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember
RészletesebbenBevezetés a C++ programozásba
Bevezetés a C++ programozásba A program fogalma: A program nem más, mint számítógép által végrehajtható utasítások sorozata. A számítógépes programokat különféle programnyelveken írhatjuk. Ilyen nyelvek
RészletesebbenA Számítógépek hardver elemei
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek hardver elemei Korszerő perifériák és rendszercsatolásuk A µ processzoros rendszer regiszter modellje A µp gépi
RészletesebbenAssembly Címzési módok. Iványi Péter
Assembly Címzési módok Iványi Péter Gépi kód Gépi kód = amit a CPU megért 1-13 byte hosszúak lehetnek az utasítások Kb. 20 000 variációja van a gépi kódú utasításoknak Számítógép architektúrától függ Feszültség
RészletesebbenBalaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.
Balaton Marcell Balázs Assembly jegyzet Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született. 1. Regiszterek Regiszterek fajtái a. Szegmensregiszterek cs (code):
RészletesebbenC# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
RészletesebbenDigitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk
Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk Elméleti anyag: Processzoros vezérlés általános tulajdonságai o z induló készletben
RészletesebbenProgramozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)
Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index
Részletesebben3. Gyakorlat Ismerkedés a Java nyelvvel
3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az
RészletesebbenMéréstechnika. 3. Mérőműszerek csoportosítása, Elektromechanikus műszerek általános felépítése, jellemzőik.
2 Méréstechnika 1. A méréstechnika tárgya, mérés célja. Mértékegységrendszer kialakulása, SI mértékegységrendszer felépítése, alkalmazása. Villamos jelek felosztása, jelek jellemző mennyiségei, azok kiszámítása.
RészletesebbenA PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere
2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda
Részletesebben5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix
2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.
RészletesebbenMi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása
Mi az assembly Gyakorlatias assembly bevezető Fordítóprogramok előadás (A, C, T szakirány) programozási nyelvek egy csoportja gépközeli: az adott processzor utasításai használhatóak általában nincsenek
RészletesebbenHardverközeli programozás oktatása a DIY Calculator segítségével Teaching hardware programming with DIY Calculator
Hardverközeli programozás oktatása a DIY Calculator segítségével Teaching hardware programming with DIY Calculator Varga Imre a a Debreceni Egyetem, Informatikai Rendszerek és Hálózatok Tanszék varga.imre@inf.unideb.hu
RészletesebbenAz INTEL D-2920 analóg mikroprocesszor alkalmazása
Az INTEL D-2920 analóg mikroprocesszor alkalmazása FAZEKAS DÉNES Távközlési Kutató Intézet ÖSSZEFOGLALÁS Az INTEL D 2920-at kifejezetten analóg feladatok megoldására fejlesztették ki. Segítségével olyan
RészletesebbenFPGA áramkörök alkalmazásainak vizsgálata
FPGA áramkörök alkalmazásainak vizsgálata Kutatási beszámoló a Pro Progressio alapítvány számára Raikovich Tamás, 2012. 1 Bevezetés A programozható logikai áramkörökön (FPGA) alapuló hardver gyorsítók
Részletesebben0.1. Mi az a standard be- és kimenet?... 1. 0.2. A két mintafeladat leírása
KöMaL Technikai tanácsok az I- és S-jelű pontversenyhez A standard be- és kimenet kezelése Tartalomjegyzék 0.1. Mi az a standard be- és kimenet?............................. 1 0.2. A két mintafeladat leírása.................................
RészletesebbenMegszakítások és kivételek
Megszakítások és kivételek Megszakítások Megszakítás a számítási rendszernek küldött jelzés, mely valamilyen esemény felléptéről értesíti. Egy megszakítás felléptekor a rendszer: megszakítja az aktív program
RészletesebbenMáté: Assembly programozás
Dr. Máté Eörs docens Képfeldolgozás és Számítógépes Grafika Tanszék Árpád tér 2. II. em. 213 6196, 54-6196 (6396, 54-6396) http://www.inf.u-szeged.hu/~mate Tantárgy leírás: http://www.inf.u-szeged.hu/oktatas/kurzusleirasok/
RészletesebbenIntel x86 utasításkészlet
Intel x86 utasításkészlet Kód visszafejtés. Izsó Tamás 2013. október 31. Izsó Tamás Intel x86 utasításkészlet/ 1 Section 1 Intel mikroprocesszor Izsó Tamás Intel x86 utasításkészlet/ 2 Intel mikroprocesszor
RészletesebbenBevezetés az informatikába
Bevezetés az informatikába 4. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.
RészletesebbenSzámítógépes alapismeretek
Számítógépes alapismeretek Heti óraszáma: 2 (Bagoly Zsolt, Papp Gábor) + (Barnaföldi Gergely) A tantárgy célja: korszerű információtechnológiai alapismeretek elsajátítása megismerkedés az informatikai
RészletesebbenIntel x86 utasításkészlet + disassembler működése
Intel x86 utasításkészlet + disassembler működése Kód visszafejtés. Izsó Tamás 2016. november 10. Izsó Tamás Intel x86 utasításkészlet + disassembler működése / 1 Section 1 Intel X86 utasításkészlet Izsó
RészletesebbenMáté: Számítógép architektúrák 2010.12.01.
Máté: Számítógép architektúrák... A feltételes ugró utasítások eldugaszolják a csővezetéket Feltételes végrehajtás (5.5 5. ábra): Feltételes végrehajtás Predikáció ió C pr. rész Általános assembly Feltételes
Részletesebben2.3. A C nyelv utasításai
2.3. A C nyelv utasításai A C szabvány hét csoportban osztályozza a C nyelv utasításait: Csoport Kulcsszavak, ill. jelölések Kifejezés utasítás Üres utasítás: ; Összetett utasítás: } Szelekciós utasítások:
RészletesebbenBevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb
Input és Output 1 Bevitel-Kivitel Eddig a számítógép agyáról volt szó Processzusok, memória, stb Szükség van eszközökre Adat bevitel és kivitel a számitógépből, -be Perifériák 2 Perifériákcsoportosításá,
RészletesebbenDSP architektúrák dspic30f család
DSP architektúrák dspic30f család A Microchip 2004 nyarán piacra dobta a dspic30f családot, egy 16 bites fixpontos DSC. Mivel a mikróvezérlők tantárgy keretén belül a PIC családdal már megismerkedtetek,
RészletesebbenProgramozás 3. Dr. Iványi Péter
Programozás 3. Dr. Iványi Péter 1 Egy operandus művelet operandus operandus művelet Operátorok Két operandus operandus1 művelet operandus2 2 Aritmetikai műveletek + : összeadás -: kivonás * : szorzás /
RészletesebbenMintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
Részletesebben11.3.1. Az MSP430 energiatakarékos használata
11.3.1. Az MSP430 energiatakarékos használata A Texas Instruments ##LINK: www.ti.com## által fejlesztett MSP430 ##Mixed Signal Processor## család tagjai létrehozásakor a tervezők fontos célja volt a rendkívül
RészletesebbenDigitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással
Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással Megoldás Elméleti anyag: Processzor belső felépítése, adat
RészletesebbenElôszó a magyar kiadáshoz A Kiadó Elôszó
Elôszó a magyar kiadáshoz A C programnyelvet eredetileg a Bell Laboratóriumban az UNIX operációs rendszerhez, az alatt fejlesztették ki PDP-11_ számítógépen. A kifejlesztése óta eltelt évek során bebizonyosodott,
RészletesebbenSzakmai program 2015
2015 Célok és feladatok a szakközépiskolai képzésben A szakközépiskolában folyó nevelés-oktatás továbbépíti, kiszélesíti és elmélyíti az általános iskolai tantárgyi követelményeket. A szakközépiskolában
RészletesebbenMikrokontrollerek. Tihanyi Attila 2007. május 8
Mikrokontrollerek Tihanyi Attila 2007. május 8 !!! ZH!!! Pótlási lehetőség külön egyeztetve Feladatok: 2007. május 15. Megoldási idő 45 perc! Feladatok: Első ZH is itt pótolható Munkapont számítás Munkapont
RészletesebbenPál László. Sapientia EMTE, Csíkszereda, 2014/2015
Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 2. ELİADÁS Visual Basic bevezetı Visual Basic.NET nyelvi elemek 2 Visual Basic.NET programozási nyelv Nyelvi elemek: Általában
RészletesebbenOrszágzászlók (2015. május 27., Sz14)
Országzászlók (2015. május 27., Sz14) Írjon programot, amely a standard bemenetről állományvégjelig soronként egy-egy ország zászlójára vonatkozó adatokat olvas be! Az egyes zászlóknál azt tartjuk nyilván,
RészletesebbenINFORMATIKAI ALAPISMERETEK
ÉRETTSÉGI VIZSGA 2016. május 18. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA 2016. május 18. 8:00 I. Időtartam: 30 perc Pótlapok száma Tisztázati Piszkozati EMBERI ERŐFORRÁSOK MINISZTÉRIUMA
RészletesebbenA számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.
Példák számok kiírására A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni. Decimális számok kiírása Az alábbi
RészletesebbenAz 5-2. ábra két folyamatos jel (A és B) azonos gyakoriságú mintavételezését mutatja. 5-2. ábra
Az analóg folyamatjeleken - mielőtt azok további feldolgozás (hasznosítás) céljából bekerülnének a rendszer adatbázisába - az alábbi műveleteket kell elvégezni: mintavételezés, átkódolás, méréskorrekció,
Részletesebben8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások
8. Fejezet Processzor (CPU) és memória: The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3rd Edition, Irv Englander John Wiley and Sons 2003 Wilson Wong, Bentley
RészletesebbenÚjrakonfigurálható technológiák nagy teljesítményű alkalmazásai
Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai Gyakorlat: SSE utasításkészlet Szántó Péter BME MIT, FPGA Laboratórium Vektorizáció Inline assembly Minden fordító támogatja (kivéve VS x64
RészletesebbenProgramozható logikai vezérlõk
BUDAPESTI MÛSZAKI EGYETEM KÖZLEKEDÉSMÉRNÖKI KAR KÖZLEKEDÉSAUTOMATIKAI TANSZÉK Programozható logikai vezérlõk Segédlet az Irányítástechnika I. c. tárgyhoz Összeállította: Szabó Géza egyetemi tanársegéd
RészletesebbenSzámítógép architektúra kidolgozott tételsor
Számítógép architektúra kidolgozott tételsor Szegedi Tudományegyetem Szeged, 27. Tartalomjegyzék. Fordítás, értelmezés... 4 2. Numerikus adatok ábrázolása: fixpontos ábrázolás, konverzió számrendszerek
RészletesebbenSzámítógépes alapismeretek
Számítógépes alapismeretek 2. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Programtervező Informatikus BSc 2008 / Budapest
RészletesebbenMit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
RészletesebbenC programnyelv 1. Kedves Kollegina, Kolléga!
C programnyelv 1 Kedves Kollegina, Kolléga! A jegyzetet Önnek készítettem azért, hogy referencia anyaga legyen a Programnyelv és a Programfejlesztés tárgyakhoz. Szeretném a segítségét igénybe venni abból
RészletesebbenArchi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz
Archi2 Gyak (Processzorok Utasításszintű Kezelése) 2014 ősz Ajánlott irodalom Agárdi Gábor: Gyakorlati Assembly, LSI Oktatóközpont, 1996, ISBN 963 577 117 7 Agárdi G.: Gyakorlati Assembly haladóknak, LSI
RészletesebbenA PC története. Informatika alapjai-9 Személyi számítógép (PC) 1/12. (Personal computer - From Wikipedia, the free encyclopedia)
Informatika alapjai-9 Személyi számítógép (PC) 1/12 (Personal computer - From Wikipedia, the free encyclopedia) A személyi számítógépet ára, mérete és képességei és a használatában kialakult kultúra teszik
Részletesebbentalálhatók. A memória-szervezési modell mondja meg azt, hogy miként
Memória címzési módok Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről) a program utasításai illetve egy utasítás argumentumai a memóriában találhatók. A memória-szervezési
RészletesebbenProgramozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
Részletesebben7.2.2. A TMS320C50 és TMS320C24x assembly programozására példák
7.2.2. A TMS320C50 és TMS320C24x assembly programozására példák A TMS320C50 processzor Ez a DSP processzor az 1.3. fejezetben lett bemutatva. A TMS320C50 ##LINK: http://www.ti.com/product/tms320c50## egy
Részletesebben8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások
8. Fejezet Processzor (CPU) és memória: The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3rd Edition, Irv Englander John Wiley and Sons 2003 Wilson Wong, Bentley
RészletesebbenTörténeti áttekintés
Történeti áttekintés Előzmények A számítástechnika kezdetén elterjedt (egyeduralkodó) volt a mérnökpult használata, a gép és az ember kommunikációja bináris nyelven zajlott. A gépi kódú programozás nem
RészletesebbenAritmetikai utasítások
Aritmetikai utasítások Az értékadó és aritmetikai utasítások során a címzési módok különböző típusaira látunk példát. A 8086/8088-as processzor memóriája és regiszterei a little endian tárolást követik,
Részletesebben1. Kombinációs hálózatok mérési gyakorlatai
1. Kombinációs hálózatok mérési gyakorlatai 1.1 Logikai alapkapuk vizsgálata A XILINX ISE DESIGN SUITE 14.7 WebPack fejlesztőrendszer segítségével és töltse be a rendelkezésére álló SPARTAN 3E FPGA ba:
RészletesebbenBevezetés az informatikába
Bevezetés az informatikába 3. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.
RészletesebbenSZÁMÍTÓGÉPARCHITEKTÚRÁK
ESSZÉ LÁNG LÁSZLÓ Zilog mokroprocesszor családok Z800 2005. December 1. Előszó A Zilog cég betörése a piacra rendkívül eredményesnek mondható volt, sőt később sikerült a csúcsra fejleszteniük a technológiájukat.
Részletesebben0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.
Teszt áramkör A CPU ból és kiegészítő áramkörökből kialakított számítógépet összekötjük az FPGA kártyán lévő ki és bemeneti eszközökkel, hogy az áramkör működése tesztelhető legyen. Eszközök A kártyán
RészletesebbenAssembly Programozás Rodek Lajos Diós Gábor
Assembly Programozás Rodek Lajos Diós Gábor Tartalomjegyzék Ábrák jegyzéke Táblázatok jegyzéke Előszó Ajánlott irodalom IV V VI VII 1. Az Assembly nyelv jelentősége 1 2. A PC-k hardverének felépítése 4
Részletesebben