Programok működése dióhéjban

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Programok működése dióhéjban"

Átírás

1 Programok működése dióhéjban Intel x68 Izsó Tamás október 30. Izsó Tamás Programok működése dióhéjban/ 1

2 Section 1 Fordítás Izsó Tamás Programok működése dióhéjban/ 2

3 authenticate.c 1 // cl /GS- authenticate.c 2 #include <stdio.h> 3 4 int verify_password(char* username, char* password) { 5 /* Csak a próba kedvéért! */ 6 if( strcmp(username,"tomi") == 0 && 7 strcmp(password,"csillag") == 0 ) return 1; 8 return 0; 9 } void log(const char* fmt, const char* msg) { 12 fprintf(stderr,fmt, msg ); 13 } Izsó Tamás Programok működése dióhéjban/ 3

4 authenticate.c 15 int authenticate(char *username, char *password) { 16 int authenticated; 17 char buffer[1024]; 18 authenticated = verify_password(username, password); 19 if(authenticated == 0) { 20 sprintf(buffer, 21 "password is incorrect for user %s\n", 22 username); 23 log("%s", buffer); 24 } 25 return authenticated; 26 } main(int argc, char* argv[] ) { 29 int res; 30 if( argc < 3 ) return 100; 31 res = authenticate( argv[1], argv[2] ); 32 printf("password : %s\n", res? "OK" :"No!" ); 33 return 0; 34 } Izsó Tamás Programok működése dióhéjban/ 4

5 Kérdés Az előző program biztonságos?? Attól függ, hogy miként fut le a program. Izsó Tamás Programok működése dióhéjban/ 5

6 Program értelmezése i n t authenticate ( char username, char password ) { i n t authenticated ; char b u f f e r [ 1024]; a u t h e n t i c a t e d = verify_password ( username, password ) ; i f ( a u t h e n t i c a t e d == 0) { s p r i n t f ( b u f f e r, " password is incorrect for user %s \ n ", username ) ; log ( "%s ", b u f f e r ) ; } return authenticated ; } Fordító Input: tomi csillag Output: Password : OK A Fordító és a számítógép értelmezi a forrásprogramot. Mi a jelentése a programsoroknak (szövegnek). Izsó Tamás Programok működése dióhéjban/ 6

7 Bináris futtatható program Input Forrás program Fordító Gépi kód Output Izsó Tamás Programok működése dióhéjban/ 7

8 Támadás megtervezése A támadó célja a számítógép felett átvenni a felügyeletet. Megvalósítás: 1 A támadást végrehajtó kód bejuttatása a számítógépre. Kivitelezés: A támadó input ablakba beírja a gépi kódú programot. A támadó preparált film, kép, mp3 fájl segítségével juttatja be a kártékony programot. stb. 2 A támadó eltéríti a program futását, és ráadja a vezérlést a bejuttatott kódra. 3 A kártékony program célja elérése érdekében használja a feltört számítógép erőforrásához. Izsó Tamás Programok működése dióhéjban/ 8

9 Kulcskérdések Rendszeresen frissített operációs rendszer esetén a bejuttatott kód csak az operációs rendszerhíváson keresztül érheti el az erőforrásokat, például a fájlokat, hálózatot, stb. 1 Ehhez ismerni kell a DLL (.so) fájl formátumát. A támadónak ismerni kell a processzor működését és a gépi utasításokat. Ismerni kell, hogy hol vannak azok a pontok, ahol az utasítás számláló regiszter kapcsolatba lép a memóriával, vagy indirekten módon befolyásolható az értéke. 1 Különben ismernie kellene még hivatalosan nem publikált úgynevezett Zero-Day Vulnerability-t. Izsó Tamás Programok működése dióhéjban/ 9

10 Mit kell tudni a támadás kivitelezéséhez a processzor felépítését és működését bájt-sorrend; regiszterek; utasítások; operációs rendszert végrehajtható 2 fájl formátumát 3 ; dinamikusan linkelt függvények hívási mechanizmusa; rendszer szintű kivételkezelés (SEH); fontosabb operációs rendszerhívások; fordító által generált kód működését stack működése; heap szerkezete; függvényhívás megvalósítása; virtuális függvények megvalósítása; programozási nyelvben megvalósított kivételkezelés (exception handler); 2 Windows esetén PE (Portable Executable), Linuxon ELF formátum 3 A DLL/shared object is ilyen formátumú fájl. Izsó Tamás Programok működése dióhéjban/ 10

11 Trojan.Cryptowall Nearly all men can stand adversity, but if you want to test a man s character, give him power. Abraham Lincoln Terjedése: levélben; Exploit Kits Oracle Java SE Remote Java Runtime Environment Code Execution Vulnerability (CVE ) Adobe Flash Player Buffer Overflow Vulnerability (CVE ) Adobe Flash Player and AIR Unspecified Heap Based Buffer Overflow Vulnerability (CVE ) Malware utján. Hatás: Titkosítja a fájlokat 2048-bit-es RSA algoritmussal. Izsó Tamás Programok működése dióhéjban/ 11

12 Section 2 PE/COFF Izsó Tamás Programok működése dióhéjban/ 12

13 Program szegmensek linkelése a.c int a; int b=2; const int z=2; int fa() {.... } A.text.data.rdata output.text b.c c.c int a; char s[]="alma"; const int v=2; int fb() {.... } int a=2; int c=2; const int w=2; int fc() {.... } B.text.data.rdata C.text.data.rdata.data.rdata Izsó Tamás Programok működése dióhéjban/ 13

14 Exe file leképzése a memóriába Unmapped Data.reloc section... section... section.rdata section.rdata section.data section.data section.text section.text section SECTION HEADERS SECTION HEADERS PE HEADER PE HEADER DOS HEADER DOS HEADER Növekvő file offset Növekvő memória cím Izsó Tamás Programok működése dióhéjban/ 14

15 Portable Executable fájl DOS operációs rendszerrel kompatibilis, figyelmeztető üzenetet ad, ha nem futtatható DOS alatt a program. A PE fájl eleje megegyezik a MZ végrehajtható fájlformátummal. DLL hívást támogatja. Az exe és a DLL azonos szerkezetű. A DLL fájlokat sokszor más kiterjesztéssel használják, pl. OCX, CPL Alpha, MIPS és.net MSIL végrehajtható fájlformátuma is egyben. 64 bites programok hasonló formában vannak tárolva, egyes helyeken a 32 bitet 64 bites adatok váltották fel. PE32+ elnevezést kapta. Izsó Tamás Programok működése dióhéjban/ 15

16 Relative Virtual Address (RVA) A futtatható fájlt a loader nem másolja be a memóriába, hanen az egyes szekciókat memory mapped file-ként kezeli. A fájlban tárolt szekciók 512-vel (0x200) osztható byte határon kezdődnek, míg a memóriában új lapra kerülnek, ahol egy lap 4Kbyte (vagy 8 Kbyte). Ezért a fájl adott tartalma a fájl elejétől más távolságra van, mint amikor ugyanezt az adatot a memóriába a betöltési ponthoz viszonyítjuk. RVA kiszámítása A memóráiban lévő címek a betőltés helyétől függetlenül vannak megadva. Ha egy cím a 0x4010DA címen szerepel és a program képe a 0x címtől kezdve lett betöltve, akkor a realitív vírtuális cím (RVA): RVA = 0x4010DA 0x = 0x10DA Izsó Tamás Programok működése dióhéjban/ 16

17 Exe file dumpja : 4D 5A FF FF MZ... DOS HEADER : B : : C : 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD L..Th : F D E 6E 6F is.program.canno : E E F t.be.run.in.dos : 6D 6F E 0D 0D 0A mode : C9 B5 76 DC 8D D4 18 8F 8D D4 18 8F 8D D4 18 8F..v : 84 AC 8B 8F 8E D4 18 8F 8D D4 19 8F 8F D4 18 8F A0: 84 AC 9B 8F 8C D4 18 8F 84 AC 89 8F 8C D4 18 8F... NT HEADER B0: D D4 18 8F Rich C0: C C 0B A PE..L...P D0: E B E0: F0: : IMAGE : OPTIONAL : : HEADER : 0C : : IMAGE : DATA : DIRECTORY : C A0: B0: E text C0: 2A D0: E0: 2E C rdata F0: : : : : SECTION : TABLE : : : : : A0: B0: C0: D0: E0: F0: : : : : : : : : : : A0: text B0: adatok C0: D0: E0: F0: : 55 8B EC 51 6A 04 6A 03 FF C4 U..Qj.j : FC 8B 45 FC 50 FF C4..E..E.P : 04 B B E5 5D C : : : : : : : A0: B0: C0: D0: E0: F0: : : : : : : : : : : A0: B0: C0: D0: E0: F0: : 4C L : R : : C L : E F 6E Function...Ad : C 63 2E 64 6C 6C d.calc.dll : : : : A0: B0: C0: D0: E0: F0: 00.rdata : : 00 adatok : : : : : : : : A0: B0: C0: D0: E0: F0: Izsó Tamás Programok működése dióhéjban/ 17

18 DOS HEADER tartalma Két érdemi részt tartalmaz: 1 e_magic értéke "MZ" (Mark Zbikowski) 2 e_lfanew file offset, a PE header-re mutat. DOS_HEADER után kis DOS program következik. A PE rész közvetlenűl ez után, 8-cal osztható címre igazítva található. Izsó Tamás Programok működése dióhéjban/ 18

19 DOS header dumpja : 4D 5A FF FF MZ... DOS HEADER : B : : C : 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD L..Th : F D E 6E 6F is.program.canno : E E F t.be.run.in.dos : 6D 6F E 0D 0D 0A mode : C9 B5 76 DC 8D D4 18 8F 8D D4 18 8F 8D D4 18 8F..v : 84 AC 8B 8F 8E D4 18 8F 8D D4 19 8F 8F D4 18 8F A0: 84 AC 9B 8F 8C D4 18 8F 84 AC 89 8F 8C D4 18 8F... NT HEADER B0: D D4 18 8F Rich C0: C C 0B A PE..L...P D0: E B E0: Izsó Tamás Programok működése dióhéjban/ 19

20 NT HEADER typedef s t r u c t _IMAGE_NT_HEADERS { DWORD Signature ; / / "PE" IMAGE_FILE_HEADER FileHeader ; IMAGE_OPTIONAL_HEADER32 OptionalHeader ; } IMAGE_NT_HEADERS32, PIMAGE_NT_HEADERS32; Izsó Tamás Programok működése dióhéjban/ 20

21 NT header dumpja : 4D 5A FF FF MZ... DOS HEADER : B : : C : 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD L..Th : F D E 6E 6F is.program.canno : Intel or 72 later 75 processors 6E and 6E compatible processors 4F t.be.run.in.dos : 6D 6F E 0D 0D 0A mode : C9 signature B5 76 DC 8D D4 18 8F 8D D4 18 8F 8D D4 18 8F..v : 84 AC 8B 8F 8E D4 18 8F 8D D4 19 8F 8F D4 18 8F A0: 84 AC 9B 8F 8C D F section időbélyeg 84 AC 89 8F 8C D4 18 8F... NT HEADER B0: D D4 18 8F Rich C0: C C 0B A PE..L...P D0: E B E0: szimbólumok szimbólumtáblára száma mutató pointer opcionális header mérete IMAGE_FILE_EXECUTABLE_IMAGE IMAGE_FILE_RELOCS_STRIPPED Izsó Tamás Programok működése dióhéjban/ 21

22 Optional header dumpja.data mérete.bbs mérete program belépési pontja RVA PE32.text mérete Kód címe RVA NT HEADER C0: C C 0B A PE..L...P D0: E B E0: F0: : IMAGE : : 00 adat címe00 image betőltési OPTIONAL címhatárra file 00 offset : 00 RVA címe HEADER igazítás határra igazítás : 0C : : IMAGE : DATA : DIRECTORY : C A0: B0: E text... Izsó Tamás Programok működése dióhéjban/ 22

23 SECTION TABLE A section táblák a fordítás során keletkezett kód, adat, konstans adat stb. területek információit tartalmazza. Egy section adatai: neve; helye a file-ban (blokkhatáron kezdődnek); section helye a memóriában (laphatáron kezdődnek); memóriavédelmi beállítások (írható, olvasható, futtatható, stb.); méret; relokációs adatok száma és azok helye a file-ban; debug-os fordítás esetén kapcsolat a forrásszöveggel (sorok száma); Izsó Tamás Programok működése dióhéjban/ 23

24 SECTION TABLE dumpja opcionális header mérete + section tábla kezdete opcionális header kezdete NT HEADER C0: C C 0B A PE..L...P D0: E B E0: F0: : IMAGE : OPTIONAL : : HEADER : 0C : : section név IMAGE : DATA : DIRECTORY : C A0: B0: E text C0: 2A D0: E0: 2E C rdata F0: : : : mérete a 00 fájlban : SECTION adatok méret : helye 00 a TABLE : fájlban : cím (RVA) : : : A0: B0: C0: D0: E0: F0: : : : : : : : : : : A0: text B0: adatok C0: D0: E0: F0: : 55 8B EC 51 6A 04 6A 03 FF C4 U..Qj.j : FC 8B 45 FC 50 FF C4..E..E.P : 04 B B E5 5D C : : : : : : : : : : : A0: B0: C0: D0: E0: F0: : 4C L : R : : C L : E F 6E Function...Ad : C 63 2E 64 6C 6C d.calc.dll : : : : A0: B0: C0: D0: E0: F0: 00.rdata : : 00 adatok : : : : : : : : A0: B0: C0: D0: E0: F0: Izsó Tamás Programok működése dióhéjban/ 24

25 IMAGE DATA DIRECTORY IMAGE DATA directory megadja a program futásánál speciális szerepet betöltő adatok. Ezeknek a helye valamelyik section-ban van. 16 darab bejegyzés van, amiből 15-öt használnak. Egy bejegyzés az adat helyét és méretét tartalmazza. Izsó Tamás Programok működése dióhéjban/ 25

26 IMAGE DATA 16 bejegyzése Illusztráció! 0 Export Table dll.edata Section 1 Import Table dll.idata 2 Resource Table.rsrc Section 3 Exception Table.pdata Section 4 Certificate Table 5 Base Relocation Table.reloc Section 6 Debug.debug Section 7 Architecture Specific Data reserved 0 8 Global Ptr 9 TLS Directory 10 Load Configuration Directory 11 Bound Import 12 IAT import address table 13 Delay Load Import Descriptors 14 CLR Runtime descriptor 15 reserved 0 Izsó Tamás Programok működése dióhéjban/ 26

27 IMPORT DIRECTORY DATA dumpja NT HEADER C0: C C 0B A PE..L...P D0: E B E0: F0: : IMAGE : OPTIONAL : : HEADER : 0C : : IMAGE IMPORT SECTION : IMPORT SECTION DATA : 00 RVA MÉRET DIRECTORY : C A0: section név B0: E text C0: 2A D0: E0: 2E C rdata F0: : : cím (RVA) : : SECTION adatok méret : TABLE : mérete a 00 fájlban : : helye a : fájlban : A0: B0: C0: D0: E0: F0: : : : : : : : : : : : : : : : A0: B0: C0: D0: E0: F0: : 4C L : R : : C L : E F 6E Function...Ad : C 63 2E 64 6C 6C d.calc.dll : : : : A0: B0: C0: D0: E0: F0: 00.rdata : : 00 adatok : : : : : : : Látható, hogy a konstans adatszegmensben kapott helyet. Izsó Tamás Programok működése dióhéjban/ 27

28 IMPORT TABLE Hint Name Table IMAGE_IMPORT _BY_NAME 44 GetMessage Import Address Table IMAGE IMPORT DESCRIPTOR OriginalFirstThunk TimeDateStamp ForwarderChain Name FirstThunk USER32.DLL 72 LoadIcon 19 TranslateMessage 95 IsWindow További DLL-ek leírása Izsó Tamás Programok működése dióhéjban/ 28

29 IMPORT TABLE : : : : rdata A0: adatok B0: C0: D0: OriginalFirstThunk E0: F0: : 4C L : R : : C L : E F 6E Function...Ad : C 63 2E 64 6C 16C d.calc.dll : : Ordinal : : Name (RVA) Name (RVA) FirstThunk A0: B0: C0: D0: Importált E0: szimbólum F0: : (függvény) neve Izsó Tamás Programok működése dióhéjban/ 29

30 IMPORT TABLE program indítása után a memóriában R C L E F 6E F u n c t i o n.... A d C 63 2E 64 6C 6C d. c a l c. d l l Izsó Tamás Programok működése dióhéjban/ 30

31 DLL-ben lévő függvény hívása Illusztráció! PUSH EBP BEC MOV EBP, ESP PUSH ECX A 04 PUSH A 03 PUSH FF CALL DWORD PTR DS:[ <& calc.add >] E 83C4 08 ADD ESP, FC MOV DWORD PTR SS : [ LOCAL.1 ],EAX B45 FC MOV EAX,DWORD PTR SS : [ LOCAL.1 ] PUSH EAX FF CALL DWORD PTR DS:[ <& calc. Function >] E 83C4 04 ADD ESP, B MOV EAX, BE5 MOV ESP,EBP D POP EBP C3 RETN Izsó Tamás Programok működése dióhéjban/ 31

32 DLL tartalma Illusztráció! PUSH EBP BEC MOV EBP,ESP B45 08 MOV EAX,DWORD PTR SS : [EBP+8] C ADD EAX,DWORD PTR SS : [EBP+0C] D POP EBP A C3 RETN PUSH EBP BEC MOV EBP,ESP B45 08 MOV EAX,DWORD PTR SS : [EBP+8] B45 0C SUB EAX,DWORD PTR SS : [EBP+0C] D POP EBP A C3 RETN PUSH EBP BEC MOV EBP,ESP B45 08 MOV EAX,DWORD PTR SS : [EBP+8] FAF45 0C IMUL EAX,DWORD PTR SS : [EBP+0C] A 5D POP EBP B C3 RETN PUSH EBP BEC MOV EBP,ESP B45 08 MOV EAX,DWORD PTR SS : [EBP+8] PUSH EAX C00010 PUSH OFFSET 1000C000 ; ASCII " P r i nt f from DLL %d " C E8 7F CALL C C4 08 ADD ESP, D POP EBP C3 RETN Izsó Tamás Programok működése dióhéjban/ 32

33 Importált függvények címének feloldása A program a dll-ben lévő Add() függvényt a címen a CALL [ ] utasítással hívja meg. Az indirekten hívott függvény címét az Import Address Table (IAT) tárolja. A fordító a declspec(dllimport) int Add(int,int) ; függvény tárolási osztály módosító hatására generál optimálisabb kódot. A loadernek a betöltésnél csak az IAT-t kell kell megváltoztatni. A függvényeket nemcsak név, hanem sorszám (ordinal number) alapján is meg lehet hívni. Izsó Tamás Programok működése dióhéjban/ 33

34 Dll Export függvények feltérképezése Program kezdetének a megállapítása. DOS header-ben lévő érték alapján a NT header kezdetének az elérése. Opcional header-ből a export tábla kezdő és végcímének a kiszámítása (RVA). Függvénynevek, függvényekhez tartozó sorszámok és címek kiolvasása. Ha a memóriába bejuttatott program nem tudja a rendszerhívások memória címét, akkor így tudja azokat kikeresni. Izsó Tamás Programok működése dióhéjban/ 34

35 Irodalom 1 Matt Pietrek An In-Depth Look into the Win32 Portable Executable File Format com/en-us/magazine/bb aspx 2 Matt Pietrek Peering Inside the PE: A Tour of the Win32 Portable Executable File Format microsoft.com/en-us/magazine/ms aspx 3 Microsoft PE and COFF Specification. microsoft.com/en-us/library/windows/ hardware/gg aspx Izsó Tamás Programok működése dióhéjban/ 35

36 Section 3 X86 utasítás Izsó Tamás Programok működése dióhéjban/ 36

37 Byte-sorrend A byte-sorrend megadja hogy a 2, 4, 8 byte-os adatok milyen sorrendben helyezkednek el a memóriában. A byte-on belül a bitek sorrendje változatlan. A0 B1 C2 D3 E4 F MSB LSB 0 Big-Endian... Little-Endian... MSB A0 89 LSB B1 67 C2 F5 D3 E4 Cím E4 D3 F5 C2 67 B1 LSB A0... MSB Max Izsó Tamás Programok működése dióhéjban/ 37

38 X86 regiszterek 8 darab 32 bites regiszter; 6 darab szegmens regiszter; statusz regiszter EFLAGS utasításszámláló EIP 32 bites általános célú regiszterek EAX EBX ECX EDX EFLAGS EIP EBP ESP ESI EDI szegmens regiszterek CS ES SS FS DS GS Izsó Tamás Programok működése dióhéjban/ 38

39 Regiszterek speciális szerepe egyes utasításokban Speciális de nem kizárólagos felhasználása a regisztereknek. EAX akkumulátor regiszter, szorzáshoz osztáshoz; ECX counter regiszter (ciklusszámlálásra); ESP stack pointer; ESI string műveletek esetén a forrás memóriaterületet indexeli; EDI string műveletek esetén a cél memóriaterületet indexeli; EBP bázis pointer a stack kezeléshez. Izsó Tamás Programok működése dióhéjban/ 39

40 x86 utasítás formátum Instruction prefix Opcode Modr/M SIB Displacement Immediate Opcionálisan adható 4 csoportba sorolható prefix Műveleti kód 1-,2-,3 byte 1 byte, ha szükséges 1 byte, ha szükséges Displacement (eltolás) 1-,2-,4 byte Immediate (közvetlen) adat 1-,2-,4 byte Reg/ Mod R/M Scale Index opcode Base Izsó Tamás Programok működése dióhéjban/ 40

41 Példa X86 utasításokra 1. add eax, ecx eax = eax + ecx ; sub esi,10 e s i = e s i 10; Izsó Tamás Programok működése dióhéjban/ 41

42 ModR/M Mod Reg Opcode R/M A ModR/M mező a műveletben résztvevő regisztereket vagy memória címzés típusát azonosítja. A mod és az r/m mező összevonva 5 bites, azaz 32 lehetséges értéket vehet fel. Ebből 8 érték regisztert címez, 24 pedig a címzési módot adja meg. A reg/opcode vagy regiszter cím, vagy 3 bit még hozzáadódik az utasításhoz, ami plusz információt hordoz. Az r/m mező a regiszter típusú operandust adja meg, vagy a mod mezővel kombinálva a címzési módot írja le. Némely ModR/M értékhez még egy byte címzési információt kell elhelyezni, ez a SIB byte. Izsó Tamás Programok működése dióhéjban/ 42

43 SIB mező Scale Index Base skálafaktor index bázis Néhány címzési módnál a ModR/M vagy ha van SIB byte után találjuk az eltolás (displacement) értéket. Ez az érték 1, 2, vagy 4 byte-os lehet. Izsó Tamás Programok működése dióhéjban/ 43

44 Címszámitás a SIB alapján base index scale displacement EAX EBX EAX ECX EBX EDX ECX 1 nincs ESP + EDX 2 EBP EBP bit 16 bit ESI ESI 8 32 bit EDI EDI offset = base + (index scale) + displacement Izsó Tamás Programok működése dióhéjban/ 44

45 ModR/M számítása Illusztráció! 000 AL AX EAX MM0 XMM0 001 CL CX ECX MM1 XMM1 010 DL DX EDX MM2 XMM2 011 BL BX EBX MM3 XMM3 100 AH SP ESP MM4 XMM4 101 CH BP EBP MM5 XMM5 110 DH SI ESI MM6 XMM6 111 BH DI EDI MM7 XMM7 regiszterek számozása MOD 11 R/M 000 REG 001 ModR/M = C8H ECX EAX Izsó Tamás Programok működése dióhéjban/ 45

46 Példa X86 utasításokra 2. Memória címzési módok: mov esi, [10128CF4 ] e s i = ( unsigned i n t ) 0x10128CF4 ; mov edx, [ ecx+0a8h ] e s i = ( unsigned i n t ) ( ecx+0x0a8 ) ; mov edx, [ ecx+eax 4] e s i = ( unsigned i n t ) ( ecx+eax 4) mov edx, [ ebp+esi 4 74h ] edx = ( unsigned i n t ) ( ebp+ e s i 4 0x74 ) ; Izsó Tamás Programok működése dióhéjban/ 46

47 Állapotregiszter Illusztráció! X ID Flag (ID) X Virtual Interrupt Pending (VIP) X Virtual Interrupt Flag (VIF) X Alignment Check (AC) X Virtual-8086 Mode (VM) X Resume Flag (RF) X Nested Task (NT) X I/O Privilege Level (IOPL) S Overflow Flag (OF) C Direction Flag (DF) X Interrupt Enable Flag (IF) X Trap Flag (TF) S Sign Flag (SF) S Zero Flag (ZF) S Auxiliary Carry Flag (AF) S Parity Flag (PF) S Carry Flag (CF) I D V V I I P F A C V M R F 0 N T I O P L O D I T S Z F F F F F F 0 A F 0 P C F 1 F S Indicates Status Flag C Indicates a Control Flag X Indicates a System Flag Foglalt bitek Forrás: Intel 64 and IA-32 Architectures Software Developer s Manual Izsó Tamás Programok működése dióhéjban/ 47

48 Vezérlésátadó utasítások Illusztráció! Utasítás Feltétel Leírás jmp 1 feltétel nélkül je ZF = 1 = vagy 0 jne ZF = 0 js SF = 1 < 0 jns SF= 0 0 jg ((SF XOR OF) OR ZF) = 0 > jge (SF XOR OF) = 0 jl (SF XOR OF) = 1 < jle ((SF XOR OF) OR ZF) = 1 ja (CF OR ZF) = 0 > jb CF = 1 < Izsó Tamás Programok működése dióhéjban/ 48

49 Vezérlésátadó utasítások Illusztráció! Utasítás Kód Feltétel Negálás (bináris) bitek 0 bit JZ JNZ JB JNB JG JNG Intel X86 utasításkészlet: Izsó Tamás Programok működése dióhéjban/ 49

50 Section 4 stack Izsó Tamás Programok működése dióhéjban/ 50

51 Stack feladata Eljárás paraméterei és lokális változóinak az élettertama az eljárás futási idejére korlátozódik. A fordító ezeknek a változóknak csak a függvény hívásától a visszatéréséig foglal helyet, fordítóírók terminológiájával élve az aktivációs rekord létrehozásával. X86 architekturán ez a stacket jelenti. Izsó Tamás Programok működése dióhéjban/ 51

52 Stack működésének a részei aktív regiszter értékének ideiglenes tárolása; paraméterek átadása; visszatérési cím elmentése; lokális adatok helyének a biztosítása; A függvények hívásához különböző hívási konvekciókat használhatunk. Izsó Tamás Programok működése dióhéjban/ 52

53 Stackkezelő utasítások push eax sub esp, 4 mov dword ptr [ esp ], eax pop eax mov eax, dword p t r [ esp ] add esp, 4 Izsó Tamás Programok működése dióhéjban/ 53

54 Call és return Eljárás hívás call (kódszegmens nem változik) 1 push <return address> 2 jmp func Visszatérés a hívóhoz ret n: 1 add esp, n 2 jmp dword ptr [esp n] 4 4 n a letett paraméterek stacken elfoglalt mérete byte-ban. Izsó Tamás Programok működése dióhéjban/ 54

55 Stack pointer munkában Stack felszabadítása nagyobb egységekben pop eax pop eax pop eax add esp, 12 Stack lefoglalás nagyobb egységekben sub esp,400 Stack megtekintés mov eax, [ esp+4] Izsó Tamás Programok működése dióhéjban/ 55

56 C példaprogram i n t func ( i n t i, i n t j, i n t k ) { double r ; i n t l =0; l = i ; l += j ; l +=k ; return l ; } i n t main ( ) { i n t a=1; i n t b=2; i n t c =3; a=func ( a, b, c ) ; return 0; } A paraméterek átadásához helyre van szükség Izsó Tamás Programok működése dióhéjban/ 56

57 C példaprogram i n t func ( i n t i, i n t j, i n t k ) { double r ; i n t l =0; l = i ; l += j ; l +=k ; return l ; } Át kell venni a paramétereket. i n t main ( ) { i n t a=1; i n t b=2; i n t c =3; a=func ( a, b, c ) ; return 0; } Izsó Tamás Programok működése dióhéjban/ 56

58 C példaprogram i n t func ( i n t i, i n t j lokális, i n t adatoknak k ) { helyet kell biztosítani. double r ; i n t l =0; l = i ; l += j ; l +=k ; return l ; } i n t main ( ) { i n t a=1; i n t b=2; i n t c =3; a=func ( a, b, c ) ; return 0; } Izsó Tamás Programok működése dióhéjban/ 56

59 C példaprogram i n t func ( i n t i, i n t j, i n t k ) { double r ; i n t l =0; l = i ; } l += j ; l +=k ; return l ; i n t main ( ) { i n t a=1; i n t b=2; i n t c =3; a=func ( a, b, c ) ; return 0; } Vissza kell adni az értéket. Izsó Tamás Programok működése dióhéjban/ 56

60 cdecl hívási konvenció, hívó feladata _main : push ebp mov ebp, esp sub esp,0ch mov dword ptr [ ebp 4],1 mov dword ptr [ ebp 8],2 mov dword ptr [ ebp 0Ch], 3 mov eax, dword ptr [ ebp 0Ch] push eax mov ecx, dword ptr [ ebp 8] push ecx mov edx, dword ptr [ ebp 4] push edx c a l l _func add esp,0ch mov dword ptr [ ebp 4], eax xor eax, eax mov esp, ebp pop ebp r e t 5 csak ha szükséges ESP EBP. hívott rutin által elmentett regiszterek EBX, ESI, EDI 5 segédváltozók által lefoglalt terület lokális változó 2 [EBP 8] lokális változó 1 [EBP 4] hívó program EBP regisztere visszatérési cím paraméter 1 [EBP + 8] paraméter 2 [EBP + 12] paraméter 3 [EBP + 16] hívó rutin által elmentett regiszterek EAX, ECX, EDX 6 main lokális változó 3 [EBP 12] main lokális változó 2 [EBP 8] main lokális változó 1 [EBP 4] Statup code EBP regisztere Izsó Tamás Programok működése dióhéjban/ 57

61 cdecl hívási konvenció, hívó feladata _main : push ebp mov ebp, esp sub esp,0ch mov dword ptr [ ebp 4],1 mov dword ptr [ ebp 8],2 mov dword ptr [ ebp 0Ch], 3 mov eax, dword ptr [ ebp 0Ch] push eax mov ecx, dword ptr [ ebp 8] push ecx mov edx, dword ptr [ ebp 4] push edx c a l l _func add esp,0ch mov dword ptr [ ebp 4], eax xor eax, eax mov esp, ebp pop ebp r e t 5 csak ha szükséges ESP EBP. hívott rutin által elmentett regiszterek EBX, ESI, EDI 5 segédváltozók által lefoglalt terület lokális változó 2 [EBP 8] lokális változó 1 [EBP 4] hívó program EBP regisztere visszatérési cím paraméter 1 [EBP + 8] paraméter 2 [EBP + 12] paraméter 3 [EBP + 16] hívó rutin által elmentett regiszterek EAX, ECX, EDX 6 main lokális változó 3 [EBP 12] main lokális változó 2 [EBP 8] main lokális változó 1 [EBP 4] Statup code EBP regisztere Izsó Tamás Programok működése dióhéjban/ 57

62 cdecl hívási konvenció, hívó feladata _main : push ebp mov ebp, esp sub esp,0ch mov dword ptr [ ebp 4],1 mov dword ptr [ ebp 8],2 mov dword ptr [ ebp 0Ch], 3 mov eax, dword ptr [ ebp 0Ch] push eax mov ecx, dword ptr [ ebp 8] push ecx mov edx, dword ptr [ ebp 4] push edx c a l l _func add esp,0ch mov dword ptr [ ebp 4], eax xor eax, eax mov esp, ebp pop ebp r e t 5 csak ha szükséges ESP EBP. hívott rutin által elmentett regiszterek EBX, ESI, EDI 5 segédváltozók által lefoglalt terület lokális változó 2 [EBP 8] lokális változó 1 [EBP 4] hívó program EBP regisztere visszatérési cím paraméter 1 [EBP + 8] paraméter 2 [EBP + 12] paraméter 3 [EBP + 16] hívó rutin által elmentett regiszterek EAX, ECX, EDX 6 main lokális változó 3 [EBP 12] main lokális változó 2 [EBP 8] main lokális változó 1 [EBP 4] Statup code EBP regisztere Izsó Tamás Programok működése dióhéjban/ 57

63 cdecl hívási konvenció, hívó feladata _main : push ebp mov ebp, esp sub esp,0ch mov dword ptr [ ebp 4],1 mov dword ptr [ ebp 8],2 mov dword ptr [ ebp 0Ch], 3 mov eax, dword ptr [ ebp 0Ch] push eax mov ecx, dword ptr [ ebp 8] push ecx mov edx, dword ptr [ ebp 4] push edx c a l l _func add esp,0ch mov dword ptr [ ebp 4], eax xor eax, eax mov esp, ebp pop ebp r e t 5 csak ha szükséges ESP EBP. hívott rutin által elmentett regiszterek EBX, ESI, EDI 5 segédváltozók által lefoglalt terület lokális változó 2 [EBP 8] lokális változó 1 [EBP 4] hívó program EBP regisztere visszatérési cím paraméter 1 [EBP + 8] paraméter 2 [EBP + 12] paraméter 3 [EBP + 16] hívó rutin által elmentett regiszterek EAX, ECX, EDX 6 main lokális változó 3 [EBP 12] main lokális változó 2 [EBP 8] main lokális változó 1 [EBP 4] Statup code EBP regisztere Izsó Tamás Programok működése dióhéjban/ 57

64 cdecl hívási konvenció, hívó feladata _main : push ebp mov ebp, esp sub esp,0ch mov dword ptr [ ebp 4],1 mov dword ptr [ ebp 8],2 mov dword ptr [ ebp 0Ch], 3 mov eax, dword ptr [ ebp 0Ch] push eax mov ecx, dword ptr [ ebp 8] push ecx mov edx, dword ptr [ ebp 4] push edx c a l l _func add esp,0ch mov dword ptr [ ebp 4], eax xor eax, eax mov esp, ebp pop ebp r e t 5 csak ha szükséges ESP EBP. hívott rutin által elmentett regiszterek EBX, ESI, EDI 5 segédváltozók által lefoglalt terület lokális változó 2 [EBP 8] lokális változó 1 [EBP 4] hívó program EBP regisztere visszatérési cím paraméter 1 [EBP + 8] paraméter 2 [EBP + 12] paraméter 3 [EBP + 16] hívó rutin által elmentett regiszterek EAX, ECX, EDX 6 main lokális változó 3 [EBP 12] main lokális változó 2 [EBP 8] main lokális változó 1 [EBP 4] Statup code EBP regisztere Izsó Tamás Programok működése dióhéjban/ 57

65 cdecl hívási konvenció, hívó feladata _main : push ebp mov ebp, esp sub esp,0ch mov dword ptr [ ebp 4],1 mov dword ptr [ ebp 8],2 mov dword ptr [ ebp 0Ch], 3 mov eax, dword ptr [ ebp 0Ch] push eax mov ecx, dword ptr [ ebp 8] push ecx mov edx, dword ptr [ ebp 4] push edx c a l l _func add esp,0ch mov dword ptr [ ebp 4], eax xor eax, eax mov esp, ebp pop ebp r e t 5 csak ha szükséges ESP EBP. hívott rutin által elmentett regiszterek EBX, ESI, EDI 5 segédváltozók által lefoglalt terület lokális változó 2 [EBP 8] lokális változó 1 [EBP 4] hívó program EBP regisztere visszatérési cím paraméter 1 [EBP + 8] paraméter 2 [EBP + 12] paraméter 3 [EBP + 16] hívó rutin által elmentett regiszterek EAX, ECX, EDX 6 main lokális változó 3 [EBP 12] main lokális változó 2 [EBP 8] main lokális változó 1 [EBP 4] Statup code EBP regisztere Izsó Tamás Programok működése dióhéjban/ 57

Exe fájlformátum és a loader

Exe fájlformátum és a loader Exe fájlformátum és a loader Kódvisszafejtés. Izsó Tamás 2015. december 3. Izsó Tamás Exe fájlformátum és a loader/ 1 Section 1 PE/COFF Izsó Tamás Exe fájlformátum és a loader/ 2 Exe file leképzése a memóriába

Részletesebben

Intel x86 utasításkészlet + disassembler működése

Intel 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észletesebben

Máté: Assembly programozás

Má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észletesebben

Intel x86 utasításkészlet

Intel 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észletesebben

PE/COFF fájl formátum

PE/COFF fájl formátum PE/COFF fájl formátum Kód visszafejtés. Izsó Tamás 2013. december 5. Izsó Tamás PE/COFF fájl formátum/ 1 Szimbólumtábla A programozási nyelvekben az típusokra, adatokra, függvényekre, ugrási címekre szimbólikus

Részletesebben

Stack Vezérlés szerkezet Adat 2.

Stack 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észletesebben

A 32 bites x86-os architektúra regiszterei

A 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észletesebben

Biztonságos programozás Puffer túlcsordulásos támadások

Biztonságos programozás Puffer túlcsordulásos támadások Biztonságos programozás Puffer túlcsordulásos támadások Intel x68 Izsó Tamás 2015. október 5. Izsó Tamás Biztonságos programozás Puffer túlcsordulásos támadások/ 1 Section 1 Puffer túlcsordulás sebezhetőség

Részletesebben

Adatelérés és memóriakezelés

Adatelé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észletesebben

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

talá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észletesebben

Assembly. Iványi Péter

Assembly. 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észletesebben

Mi 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ő. 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észletesebben

Bevezetés a számítástechnikába

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észletesebben

Exe fájlformátum loader linker

Exe fájlformátum loader linker Exe fájlformátum loader linker Kód visszafejtés. Izsó Tamás 2016. december 1. Izsó Tamás Exe fájlformátum loader linker/ 1 Section 1 Linker és Loader Izsó Tamás Exe fájlformátum loader linker/ 2 Több modulból

Részletesebben

Assembly 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 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észletesebben

Assembly Címzési módok. Iványi Péter

Assembly 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észletesebben

Programozás alapjai. 10. előadás

Programozás alapjai. 10. előadás 10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:

Részletesebben

Digitális rendszerek. Utasításarchitektúra szintje

Digitá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észletesebben

Aritmetikai utasítások I.

Aritmetikai utasítások I. Aritmetikai utasítások I. 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ákat. A 8086/8088-as mikroprocesszor memóriája és regiszterei a little endian tárolást

Részletesebben

Biztonságos programozás Puffer túlcsordulásos támadások

Biztonságos programozás Puffer túlcsordulásos támadások Biztonságos programozás Puffer túlcsordulásos támadások Intel x68 Izsó Tamás 2015. október 13. Izsó Tamás Biztonságos programozás Puffer túlcsordulásos támadások/ 1 Section 1 Támadások Izsó Tamás Biztonságos

Részletesebben

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.

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. 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észletesebben

Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz

Archi2 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észletesebben

Vezérlésfolyam gráf és X86 utasításkészlet

Vezérlésfolyam gráf és X86 utasításkészlet Vezérlésfolyam gráf és X86 utasításkészlet Kód visszafejtés. Izsó Tamás 2016. november 3. Izsó Tamás Vezérlésfolyam gráf és X86 utasításkészlet / 1 Intervallum algoritmus Procedure Intervals(G={N, E, h})

Részletesebben

Karunkról Kari digitális könyvtár

Karunkról Kari digitális könyvtár . előadás Jegyzet www.inf.elte.hu Karunkról Kari digitális könyvtár i az assembly? gépi kód: a számítógép által közvetlenül értelmezett és végrehajtott jelsorozat assembly: a gépi kód emberek számára könnyen

Részletesebben

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás Kódgenerálás Memóriagazdálkodás Kódgenerálás program prológus és epilógus értékadások fordítása kifejezések fordítása vezérlési szerkezetek fordítása Kódoptimalizálás L ATG E > TE' E' > + @StPushAX T @StPopBX

Részletesebben

Processzorok Utasításszintű Kezelése tavasz

Processzorok Utasításszintű Kezelése tavasz Processzorok Utasításszintű Kezelése 2014 tavasz 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 oktatóközpont,

Részletesebben

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen:

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen: Informatika szigorlat 16-os tétel: Az assembly nyelvek tulajdonságai és fordítása Az assembly nyelv tulajdonképpen a gépi kód szimbolikus megfelelője, azért jött létre, hogy könnyebben lehessen programozni

Részletesebben

Számítógép architektúrák

Számítógép architektúrák Számítógép architektúrák Számítógépek felépítése Digitális adatábrázolás Digitális logikai szint Mikroarchitektúra szint Gépi szint Operációs rendszer szint Assembly nyelvi szint Probléma orientált (magas

Részletesebben

1. Az utasítás beolvasása a processzorba

1. 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észletesebben

Bevezetés Alapfogalmak Jog

Bevezetés Alapfogalmak Jog Bevezetés Alapfogalmak Jog Kód visszafejtés. Izsó Tamás 2015. szeptember 18. Izsó Tamás Bevezetés Alapfogalmak / 1 Tartalom 1 Bevezetés 2 Alapfogalmak 3 Motivációs példák 4 Jog Izsó Tamás Bevezetés Alapfogalmak

Részletesebben

Paraméter átadás regisztereken keresztül

Paraméter átadás regisztereken keresztül Eljárások paramétereinek átadási módjai Az eljárások deklarációjánál nincs mód arra, hogy paramétereket adjunk meg, ezért más, közvetett módon tudunk átadni paramétereket az eljárásoknak. Emlékeztetőül:

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

Assembly. Iványi Péter

Assembly. Iványi Péter Assembly Iványi Péter Miért? Ma már ritkán készül program csak assembly-ben Általában bizonyos kritikus rutinoknál használják Miért nem használjuk? Magas szintű nyelven könnyebb programozni Nehéz más gépre

Részletesebben

Assembly utasítások listája

Assembly 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észletesebben

Dr. Schuster György október 14.

Dr. Schuster György október 14. Real-time operációs rendszerek RTOS 2011. október 14. A fordítás vázlata prog.c Előfeldolgozó Átmenti állomány Fordító prog.obj más.obj-tek könyvtárak indító kód Linker futtatható kód Ismétlés Előfeldolgozó

Részletesebben

Assembly programozás levelező tagozat

Assembly programozás levelező tagozat Assembly programozás levelező tagozat Szegedi Tudományegyetem Képfeldolgozás és Számítógépes Grafika Tanszék 2011-2012-2 Tematika Assembly nyelvi szint. Az Intel 8086/88 regiszter készlete, társzervezése,

Részletesebben

Virtuális memóriakezelés Védelem. Memória védelem. Intel X86. Izsó Tamás október 1. Izsó Tamás Memória védelem/ 1

Virtuális memóriakezelés Védelem. Memória védelem. Intel X86. Izsó Tamás október 1. Izsó Tamás Memória védelem/ 1 Memória védelem Intel X86 Izsó Tamás 2015. október 1. Izsó Tamás Memória védelem/ 1 Section 1 Virtuális memóriakezelés Izsó Tamás Memória védelem/ 2 Operációs rendszer hardver szintű támogatása Hardver

Részletesebben

Assembly Utasítások, programok. Iványi Péter

Assembly 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észletesebben

Biztonságos programozás Puffer túlcsordulásos támadások

Biztonságos programozás Puffer túlcsordulásos támadások Biztonságos programozás Puffer túlcsordulásos támadások Izsó Tamás 2015 október 12 Izsó Tamás Biztonságos programozás Puffer túlcsordulásos támadások/ 1 Section 1 DEP támadás Izsó Tamás Biztonságos programozás

Részletesebben

Operációs rendszerek III.

Operációs rendszerek III. A WINDOWS NT memóriakezelése Az NT memóriakezelése Memóriakezelő feladatai: Logikai-fizikai címtranszformáció: A folyamatok virtuális címterének címeit megfelelteti fizikai címeknek. A virtuális memóriakezelés

Részletesebben

Bevezetés a számítástechnikába

Bevezetés a számítástechnikába Bevezetés a számítástechnikába Megszakítások Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 9. Bevezetés Megszakítások

Részletesebben

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1 Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó

Részletesebben

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák Máté: Számítógép architektúrák 211117 Utasításrendszer architektúra szintje ISA) Amit a fordító program készítőjének tudnia kell: memóriamodell, regiszterek, adattípusok, ok A hardver és szoftver határán

Részletesebben

Megszakítások és kivételek

Megszakí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észletesebben

Bevezetés az informatikába

Bevezeté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észletesebben

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán Jelszavak helyes megválasztása, szótáras törés Pánczél Zoltán 1 Miért fontos a megfelelő jelszó? Nagyban növeli a rendszer biztonságát. Könnyű jelszó = Nincs jelszó A teljes rendszer biztonsága tőlünk

Részletesebben

A Számítógépek felépítése, mőködési módjai

A 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észletesebben

Architektúra, megszakítási rendszerek

Architektú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észletesebben

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti

Részletesebben

Mikroprocesszor 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 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észletesebben

Virtuális memóriakezelés Védelem. Memória védelem. Intel x68. Izsó Tamás október 18. Izsó Tamás Memória védelem/ 1

Virtuális memóriakezelés Védelem. Memória védelem. Intel x68. Izsó Tamás október 18. Izsó Tamás Memória védelem/ 1 Memória védelem Intel x68 Izsó Tamás 213. október 18. Izsó Tamás Memória védelem/ 1 Section 1 Virtuális memóriakezelés Izsó Tamás Memória védelem/ 2 Operációs rendszer hardver szintű támogatása Hardver

Részletesebben

Mutatók és mutató-aritmetika C-ben március 19.

Mutatók és mutató-aritmetika C-ben március 19. Mutatók és mutató-aritmetika C-ben 2018 március 19 Memória a Neumann-architektúrában Neumann-architektúra: a memória egységes a címzéshez a természetes számokat használjuk Ugyanabban a memóriában van:

Részletesebben

Utolsó módosítás:

Utolsó módosítás: Utolsó módosítás:2010. 09. 15. 1 2 Kicsit konkrétabban: az utasítás hatására a belső regiszterek valamelyikének értékét módosítja, felhasználva regiszter értékeket és/vagy kívülről betöltött adatot. A

Részletesebben

HARDVERKÖZELI PROGRAMOZÁS1

HARDVERKÖZELI PROGRAMOZÁS1 HARDVERKÖZELI PROGRAMOZÁS1 Dr. Varga Imre Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék 2015.05.11 Követelmények Gyakorlat (aláírás) Óralátogatás (maximum hiányzás: 3) C programozási beugró

Részletesebben

Máté: Assembly programozás

Máté: Assembly programozás Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type osztály... szegmens sz_név ENDS sz_név a szegmens (szelet) neve. A fordító az azonos nevű szegmens szeleteket úgy tekinti, mintha folyamatosan,

Részletesebben

2016/08/31 02:45 1/6 Hardver alapok

2016/08/31 02:45 1/6 Hardver alapok 2016/08/31 02:45 1/6 Hardver alapok < Hardver Hardver alapok Szerző: Sallai András Copyright Sallai András, 2011, 2013, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Bevezetés A számítógépet

Részletesebben

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák Pentium 4 Nagyon sok előd kompatibilitás!), a fontosabbak: 44: 4 bites, 88: 8 bites, 886, 888: es, 8 bites adat sín 8286: 24 bites nem lineáris) címtartomány 6 K darab 64 KB-os szegmens) 8386: IA-32 architektúra,

Részletesebben

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

5-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észletesebben

Számítógépek felépítése

Számítógépek felépítése Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák

Részletesebben

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.

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. 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észletesebben

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon 1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (

Részletesebben

Számítógép Architektúrák

Szá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észletesebben

2017/12/16 21:33 1/7 Hardver alapok

2017/12/16 21:33 1/7 Hardver alapok 2017/12/16 21:33 1/7 Hardver alapok < Hardver Hardver alapok Szerző: Sallai András Copyright Sallai András, 2011, 2013, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Bevezetés A számítógépet

Részletesebben

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7. Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Dinamikus memóriakezelés Dinamikus tömbök Dinamikus stringek Program kapcsolata a

Részletesebben

Kitlei Róbert kitlei.web.elte.hu. Karunkról Kari digitális könyvtár

Kitlei Róbert kitlei.web.elte.hu.  Karunkról Kari digitális könyvtár . előadás Kitlei Róbert kitlei.web.elte.hu Jegyzet: ssembly programozás www.inf.elte.hu Karunkról Kari digitális könyvtár i az assembly? gépi kód: a számítógép által közvetlenül értelmezett és végrehajtott

Részletesebben

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák I-51 (19) Cél: beépített rendszerekben való alkalmazás Fő szempont: olcsóság (ma már 1-15 ), sokoldalú alkalmazhatóság A memóriával, be- és kivitellel együtt egyetlen lapkára integrált számítógép Mikrovezérlő

Részletesebben

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza. A C nyelvű programokban gyakran használják a

Részletesebben

Egyszerű RISC CPU tervezése

Egyszerű 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észletesebben

assume CS:Code, DS:Data, SS:Stack Start mov dl, 100 mov dh, 100 push dx Rajz

assume CS:Code, DS:Data, SS:Stack Start mov dl, 100 mov dh, 100 push dx Rajz Feladat5: rajzolo.asm Feladat meghatározása A feladat célja bemutatni egy egyszerű grafikai program segítségével a közvetlen címzést (grafikus VGA 320*200). A program a kurzor mozgató gombok segítségével

Részletesebben

A MiniRISC processzor

A 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észletesebben

A hibát az alábbi Python program segítségével tudjuk előidézni:

A hibát az alábbi Python program segítségével tudjuk előidézni: Bevezető Az ismertetésre kerülő biztonsági hiba 0day kategóriába tartozik, ezért sem a termék, sem a teljes hiba kihasználását lehetővé tevő kód bemutatása nem történik meg. A leírás célja az alkalmazott

Részletesebben

Mikrokontrollerek. Tihanyi Attila 2007. május 8

Mikrokontrollerek. 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észletesebben

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1 INFORMATIKAI RENDSZEREK ALAPJAI (INFORMATIKA I.) 1 NEUMANN ARCHITEKTÚRÁJÚ GÉPEK MŰKÖDÉSE SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1 Ebben a feladatban a következőket fogjuk áttekinteni: Neumann rendszerű számítógép

Részletesebben

Operációs rendszerek. Az NT folyamatok kezelése

Operációs rendszerek. Az NT folyamatok kezelése Operációs rendszerek Az NT folyamatok kezelése Folyamatok logikai felépítése A folyamat modell: egy adott program kódját végrehajtó szál(ak)ból és, a szál(ak) által lefoglalt erőforrásokból állnak. Folyamatok

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407) Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407) 1 Előadás Bevezetés az informatikába Adatszerkezetek Algoritmusok, programozási technológiák Számítástudomány alapjai

Részletesebben

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer 1 Fájl rendszer Terminológia Fájl és könyvtár (mappa) koncepció Elérési módok Fájlattribútumok Fájlműveletek, fájlszerkezetek ----------------------------------------- Könyvtár szerkezet -----------------------------------------

Részletesebben

assume CS:Code, DS:Data, SS:Stack Start: xor di, di mov si, 1 Torles int 10h mov dl, 40 xor bh, bh mov ah, 02h Kesleltet int 16h

assume CS:Code, DS:Data, SS:Stack Start: xor di, di mov si, 1 Torles int 10h mov dl, 40 xor bh, bh mov ah, 02h Kesleltet int 16h Fealadat3: labda.asm Feladat meghatározása A program célja az assembly rutinok időzítési lehetőségeinek bemutatása. Az időzítés az AH00, INT1Ah funkció segítségével történik. A program egy labda leesését

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

Aritmetikai utasítások

Aritmetikai 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észletesebben

Számítógépek felépítése, alapfogalmak

Szá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észletesebben

Az integrált áramkörök kimenetének kialakítása

Az 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

Hírközlő rendszerek biztonsága laboratórium Számítógépes rendszerek sebezhetőségének vizsgálata

Hírközlő rendszerek biztonsága laboratórium Számítógépes rendszerek sebezhetőségének vizsgálata Hírközlő rendszerek biztonsága laboratórium Számítógépes rendszerek sebezhetőségének vizsgálata Budapesti Műszaki és Gazdaságtudományi Egyetem Híradástechnikai Tanszék 2009. Számítógépes rendszerek sebezhetőségének

Részletesebben

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.

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. 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észletesebben

Operációs rendszerek. Az NT memóriakezelése

Operációs rendszerek. Az NT memóriakezelése Operációs rendszerek MS Windows NT (2000) memóriakezelés Az NT memóriakezelése 32-bites virtuális memóriakezelés: 4 GB-os címtartomány, alapesetben: a fels! 2 GB az alkalmazásoké, az alsó 2 GB az OPR-é.

Részletesebben

Programozás C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

Részletesebben

Programozás I. gyakorlat

Programozás I. gyakorlat Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt

Részletesebben

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban...

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban... A kódgenerálás helye a fordítási folyamatban Forrásprogram Forrás-kezelő (source handler) Kódgenerálás I. (kifejezések és vezérlési szerkezetek) Fordítóprogramok előadás (A,C,T szakirány) 2008. őszi félév

Részletesebben

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás ATmega128 CPU Single-level pipelining Egyciklusú ALU működés Reg. reg., reg. konst. közötti műveletek 32 x 8 bit általános célú regiszter Egyciklusú

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

Részletesebben

Jelfeldolgozás a közlekedésben

Jelfeldolgozás a közlekedésben Jelfeldolgozás a közlekedésben 2015/2016 II. félév 8051 és C8051F020 mikrovezérlők Fontos tudnivalók Elérhetőség: ST. 108 E-mail: lovetei.istvan@mail.bme.hu Fontos tudnivalók: kjit.bme.hu Aláírás feltétele:

Részletesebben

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

C programozás. 6 óra Függvények, függvényszerű makrók, globális és C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása A verem (stack) A verem egy olyan struktúra, aminek a tetejére betehetünk egy új (vagy sorban több) elemet a tetejéről kivehetünk egy (vagy sorban több) elemet A verem felhasználása Függvény visszatérési

Részletesebben

Programozás 6. Dr. Iványi Péter

Programozás 6. Dr. Iványi Péter Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak

Részletesebben

Máté: Számítógép architektúrák 2010.12.01.

Má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észletesebben

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

[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észletesebben

Architektúra, címzési módok

Architektúra, címzési módok Architektúra, címzési módok Mirıl lesz szó? Címzés fogalma, címzési módok Virtuális tárkezelés Koschek Vilmos Példa: Intel vkoschek@vonalkodhu Fogalom A címzési mód az az út (algoritmus), ahogyan az operandus

Részletesebben

Gá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. 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észletesebben