170 likes | 260 Views
Sz ámítógép architektúra. x86-os processzorok. A processzor felépítése (8 0 86). Vérehajtó egység (EU) : regiszterek, vezérlő egység (CU), aritmetikai logikai egység (ALU) – az utasítások végrehajtása
E N D
Számítógép architektúra x86-os processzorok
A processzor felépítése (8086) • Vérehajtó egység (EU): regiszterek, vezérlő egység (CU), aritmetikai logikai egység (ALU) – az utasítások végrehajtása • Sín illesztő egység (Bus interface unit – BIU): behozza az utasításokat a EU-ba, kezeli a szegmensregisztereket és az utasítássort • A két egység egymástól függetlenül, aszinkron működik x86-os processzorok
Belső memória • ROM – Read Only Memory, csak olvasható, a BIOS gépfüggő részének tárolására • RAM – Random Access Memory • Regiszterek és memória közti átvitel – az alacsonyabb helyiértékű byte a regiszterből a kisebb memóriacímre kerül (little endian) x86-os processzorok
Valós üzemmód • 16 bites szegmensregiszterek • 16 bites eltolás – a szegmens hossza max. 64 kB • Szegmensen belüli címtartomány: 0000h – FFFFh • 20 bites címek – 1 MB címezhető tartomány • Címszámítás: cím = szegmensregiszter * 16 + eltolás x86-os processzorok
16 bites védett üzemmód • A 80286-os processzortól • A szegmensregiszterek egy szelektort tartalmaznak, ami index a deszkriptortáblához • Minden szegmenshez tartozik egy bemenet a deszkriptortáblában, ami megadja a szegmens jellemzőit: kezdőcím, hossz, hozzáférési jogok, védelmi információk • Továbbra is 16 bites offset, a szegmens hossza max. 64 kB. x86-os processzorok
32 bites védett üzemmód • A 80386-os processzortól • A 16 bites védett üzemmódhoz hasonlóan működik 32 bites eltolással • A szegmens hossza max. 4 GB • Lehetséges a lapozás – 4 kB fix hosszúságú lapokra ossza a memóriát (a virtuális memória kezelés a szegmentálás mellett lapozással is dolgozhat) x86-os processzorok
Regiszterek • Nagyon gyors hozzáférésű memória a processzoron belül • Dolgozhatunk 32, illetve 16 bites regiszterekkel • A regisztereknek jól meghatározott feladata van • Nagyrészük használható ideiglenes tárolásra amikor nincs szükség a sajátos szerepére x86-os processzorok
Szegmensregiszterek (1) • 16 bites regiszterek • CS – cod segment register – a kódszegmens kezdőcímét határozza meg. Az IP regiszterrel együtt [CS:IP] megadja a soron következő utasítás címét • DS – data segment register – azadatszegmens kezdőcímét határozza meg. Az utasításokba foglalt eltolásokkal megadja az operandus címét x86-os processzorok
Szegmensregiszterek (2) • SS – stack segment register – a veremszegmens kezdőcímét határozza meg, az SP [SS:SP] illetve BP [SS:BP] regiszterekkel együtt adja meg a verembeli címet • ES – extra segment register – string műveleteknél a DI regiszterrel [ES:DI] adja meg a cél operandus címét • FS, GS – a 80386-os processzortól még két extra szegmens x86-os processzorok
Mutató (pointer) regiszterek • Címszámításnál az eltolást adják meg • EIP (IP) – Instruction Pointer – utasítás számláló • ESP (SP) – Stack Pointer – verem mutató • EBP (BP) – Base Pointer – bázis mutató • EIP a kódszegmensre, ESP és EBP a verem-szegmensre mutat x86-os processzorok
Általános regiszterek (1) • EAX, EBX, ECX, EDX – 32 bites regiszterek • AX, BX, CX, DX – 16 bites regiszterek, a fentiek alacsonyabb helyiértékű 2 byte-ja • AL, BL, CL, DL – a 16 bites regiszterek alacsonyabb helyiértékű byte-ja • AH, BH, CH, DH – a 16 bites regiszterek magasabb helyiértékű byte-ja 31 16 15 8 7 0 x86-os processzorok
Általános regiszterek (2) • EAX – akkumulátor – I/O műveletek és egyes aritmetikai műveletek használják • EBX – bázis regiszter – címzésnél bázisregisz-terként használható az adatszegmensben • ECX – számláló regiszter – ciklusszervezésnél, bitműveleteknél számláló • EDX – data regiszter – I/O műveletek, illetve a szorzás és az osztás használják (párban az EAX regiszterrel) x86-os processzorok
Index regiszterek • ESI (SI) – Source Index – string műveleteknél a DS regiszterrel adja meg a forrásoperandus címét [DS:SI] • EDI (DI) – Destination Index – string műveleteknél azES regiszterrel adja meg a céloperandus címét [ES:DI] x86-os processzorok
Állapotregiszter • EFLAGS – 32 bites regiszter • FLAGS – alacsonyabb helyiértékű 16 bit • Az utasítások végrehajtásának eredményére vonatkozó, illetve vezérlő információt tartalmaz – jelzőbitek • Valós üzemmódban használható jelzőbitek: x86-os processzorok
Jelzőbitek (1) • CF – Carry Flag – átvitel bit, aritmetikai illetve biteltolás műveleteknél ide kerül a kifutó bit • PF – Parity Flag – paritás bit, 1, ha az eredmény alacsonyabb helyiértékű byte-ja számjegyeinek összege páros • AF – Adjust Flag – segédátvitel, BCD aritmetikánál használt, átvitel a 3-as bitről x86-os processzorok
Jelzőbitek (2) • ZF – Zero Flag – 1, ha az eredmény nulla • SF – Sign Flag – 1, ha az eredmény negatív • OF – Overflow Flag – 1, ha aritmetikai túlcsordulás történt • DF – Direction Flag – vezérlő bit, string műveletek irányát határozza meg • IF – Interrupt enable Flag – vezérlő bit, maszkolható megszakítások letiltása • TF – Trap Flag – vezérlő bit, lépésenkénti üzemmód, azaz minden utasítás végrehajtása után megszakítás – debug lehetséges x86-os processzorok
Regiszterek (összefoglaló) 31 16 15 8 7 0 15 0 EAX EBX ECX EDX EIP ESP EBP ESI EDI CS DS SS ES FS GS AH AL BH BL CH CL DH DL IP SP BP SI DI 31 16 15 8 7 0 I VI VI A V R N I O O D I T S Z A P C D P F C M F T P L F F F F F F F F F EFLAGS x86-os processzorok