11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

1 Számítógépek felépítése 9. előadás I/O rendszerek.
ADATBÁZIS KEZELÉS – Adattípusok
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
2009 Bevezetés a programozásba Krankovits Melinda.
9. előadás (2005. április 26.) Parancssor argumentum kezelés példák (K&R) Fordítóprogramok A C előfordító 1.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
LINUX/UNIX PARANCSOK.
Dinamikus tömbök.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
2. Gyakorlat Követelmények / „C” ismétlés
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
C A C nyelv utasításai.
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák tömbökre
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
C++ alapok, harmadik óra
Vizuális és web programozás II.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
C nyelv utasításai.
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Operációs rendszerek gyakorlat 1. Bevezetés Vakulya Gergely.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Készítette: Csíki Gyula
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Széchenyi Isván Egyetem Számítógépes hálózatok II 1 Számítógépes Hálózatok II Széchenyi István Egyetem.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Java programozási nyelv Filekezelés
Logikai programozás 8.. Adatok: ISMÉTLÉS: ADATBÁZISKEZELÉS A külső adatok a hatására bekerülnek a memóriába Lekérdezés: Ahogy eddig – pl.: szereti(jani,
Egy első generációs gép (az IAS) felépítése
Objektum orientált programozás
Objektum orientált programozás
A Visual Basic nyelvi elemei
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
CUDA C/C++ programozás Atomikus műveletek A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
C Programozási alapok.
Írja fel a tizes számrendszerbeli
Algoritmizálás, adatmodellezés
Bevezetés az Office programozásába
Egy lekérdezés végrehajtása SELECT o1 FROM T1 WHERE o2 = … Hogyan jutnak el a megfelelő sorokból a mező értékei a klienshez?
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Fájlkezelés Programozási tételek
Az 5,6,7 laborok VBA anyagának összefoglalása
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat Hőmérséklet mérése Makan Gergely, Mellár János, Mingesz Róbert V március 23.
Ismétlés:grafikus felületek Felső panel Indítópanel Asztal Indikátorok Kuka.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Változók.
Számítógépes algoritmusok
A struct, az union és az enum típus
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Függvénysablonok használata
Előadás másolata:

11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1

make A make segédprogram (utility) egy intelligens program menedzser, amellyel megőrizhetjük egy modulokból álló program integritását. Nem a C (vagy más) nyelv része. Pl. main.c f1.c fn.c cc -o main main.c f1.c fn.c Csak a megváltozottakat: cc -o main main.c f1.c... fi.o.. fj.o... fn.c ( cc -c main.c a main.o előállítására ) Időrabló, fáradságos, hibaforrás. 2

make programozás A make program egy sor parancs, ami leírja, hogy hogyan lehet a programot a forrás fájlokból felépíteni. A make program fájl függőségi és kontrukciós szabályokat tartalmaz. Függőségi szabály: bal oldal : jobb oldal A bal oldal az előállítandó célfájlok neveit adja meg, míg a jobb oldal megadja azokat a fájlneveket, melyektől a cél függ. Ha a cél dátuma korábbi mint az alkotóké, akkor a make a függőségi szabályokat követő konstrukciós előírásokat végrehajtja. 3

make programozás Megj.: a make fájlok minden olyan parancsot végrehajtanak, amit parancssorban kiadhatunk (pl. backup fájl készítése). A make fájl bármely szövegszerkesztővel létrehozható. Pl. prog: prog.o f1.o f2.o cc -o prog prog.o f1.o f2.o -lm prog.o: header.h prog.c cc -c prog.c f1.o: header.h f1.c cc -c f1.c f2.o: Explicit szabályok: megnevezzük a fájlokat. 4

make programozás Implicit szabályok, pl.: f1.o: f1.c cc -c f1.c f2.o: f2.c cc -c f2.c általánosítható:.c.o: cc -c $<.forrás_kiterjesztés.cél_kiterjesztés : parancs $< a.c kiterjesztést jelenti # a sor megjegyzés 5

make programozás A make több a Unix parancsokhoz hasonló beépített, vagy tényleges Unix paranccsal rendelkezik, pl.: break, date, mkdir, type, chdir, cp(copy), mv(move or rename), cd, rm(remove), ls, path 6

make makrók Makrók definiálhatók forrásfájl nevek, objectfájl nevek, compiler opciók és könyvtár linkek tárolására: SOURCES = main.c f1.c f2.c CFLAGS = -g -C LIBS = -lm PROGRAM = main OBJECTS = (SOURCES:.c =.o),ahol a (SOURCES:.c =.o) a SOURCES.c kiterjesztését.o -vá teszi. 7

make programozás Makró hívása: $(makrónév), pl.: $(PROGRAM) : $(OBJECTS) Egy sor függőséget és célt állít fel. $(LINK.C) -o $(OBJECTS) $(LIBS) Néhány belső makró: $* az aktuális függő fájl neve (kiterjesztés nélkül) az aktuális cél teljes neve $< a cél.c fájlja 8

make futtatása Parancssorban: make automatikusan az aktuális könyvtárban a Makefile nevű fájlt keresi és hajtja végre. Felülbírálható: make -f make_fájlnév Pl.: make -f sajat_make További opciók a kézikönyvekben, pl. a gnu.org -ról kiindulva. Példák forrása: Dave Marshall 9

Alacsony szintű műveletek és bitmezők Bitenkénti műveletek: & (AND), | (OR), ^ (XOR), ~ (egyes komplemens) > (jobbra tolás) Bitmezők Memória takarékosság céljából használjuk: - egybites információ tárolására: flag (pl. compiler szimbólumtábla) - nem szabványos külső fájl formátum olvasásakor, pl. 9 bites egész 10

Bitmezők Deklarációja, pl.: struct packed_struct { unsigned int f1:1; unsigned int f2:1; unsigned int f3:1; unsigned int f4:1; unsigned int type:4; unsigned int funny_int:9; } pack; A C a lehető legtömörebben tárolja a fenti bitmezőket, feltéve, hogy a mezők maximális hossza kisebb vagy egyenlő a gép egész szavánál. Kompatibilitás! 11

Bitmezők Tagok elérése a szokásos módon, pl.: pack.type = 7; Megj.: - csak az n alsó bit rendelődik egy n bites mezőhöz - a bitmezők mindíg egésszé konvertálódnak a számítások során - a standard típusok és a bitmezők vegyesen használhatók - az unsigned definíció fontos 12

Bitmezők használata: diszk kontroller Az eszközvezérlő regiszterei egy egész szóba pakolhatók (Dave Marshall): 13

Bitmezők használata: diszk kontroller A regiszter definíciója: struct DISK_REGISTER { unsigned ready:1; unsigned error_occured:1; unsigned disk_spinning:1; unsigned write_protect:1; unsigned head_loaded:1; unsigned error_code:8; unsigned track:9; unsigned sector:5; unsigned command:5; }; 14

Bitmezők használata: diszk kontroller A diszk regiszter memória címre definíálunk egy pointert: struct DISK_REGISTER *disk_reg = (struct DISK_REGISTER *) DISK_REGISTER_MEMORY; Kódrészlet pl. olvasásra: 15

Bitmezők használata: diszk kontroller /* Define sector and track to start read */ disk_reg->sector = new_sector; disk_reg->track = new_track; disk_reg->command = READ; /* wait until operation done, ready will be true */ while ( ! disk_reg->ready ) ; /* check for errors */ if (disk_reg->error_occured) { /* interrogate disk_reg->error_code for error type */ switch (disk_reg->error_code) } 16

Bitmezők: portabilitás Gondok: - az egészek lehetnek signed vagy unsigned - sok compiler a bitmező hosszát az int típus méretére korlátozza: 16 vagy 32 bit - bizonyos bitmezőket balról-jobbra, másokat jobbról- balra tárolnak a memóriában - ha a bitmező túl nagy, akkor a következő bitmező közvetlenül utána, vagy a következő szóban kezdődhet. 17

Bitmezők: portabilitás Ha a portabilitás fontos, akkor használjuk a bit shift-et és a maszkolást, pl.: unsigned int *disk_reg = (unsigned int *) DISK_REGISTER_MEMORY; /* see if disk error occured */ disk_error_occured = (disk_reg & 0x ) >> 31; 18

Fájl, katalógus rendszer hívások A cd, ls, rm, cp, mkdir, stb. megvalósítása C programból. Katalógus kezelő függvények Katalógus váltás int chdir(char *path) Munkakatalógus lekérdezése (teljes útvonal) char *getwd(char *path) Hiba: NULL A Unix cd parancsának C emulációja: 19

Fájl, katalógus rendszer hívások #include main(int argc,char **argv) { if (argc < 2) { printf("Usage: %s <pathname \n",argv[0]); exit(1); } if (chdir(argv[1]) != 0) { printf("Error in chdir \n"); exit(1); } 20

Fájl, katalógus rendszer hívások Fájl hozzáférés meghatározása: int access(char *path, int mode) mode: R_OK - olvasási engedély W_OK - írási engedély X_OK - végrehajtás vagy keresés engedély F_OK - a fájlhoz vezető út kereshető és létezik-e 0 sikeres, -1 hiba és errn o beállítás És így tovább... 21