1.57k likes | 1.75k Views
SOCS. Hoofdstuk 1 Computerarchitectuur. Computerarchitectuur. Uitgangspunt: Computer Logische bouwstenen Werking/mogelijkheden/beperkingen Primitieve Opdrachten. Inhoud. Basisstructuur Inleiding tot C Modelcomputer DRAMA Programma´s voor DRAMA. 1.1 Basisstructuur.
E N D
SOCS Hoofdstuk 1 Computerarchitectuur
Computerarchitectuur • Uitgangspunt: • Computer • Logische bouwstenen • Werking/mogelijkheden/beperkingen • Primitieve Opdrachten
Inhoud • Basisstructuur • Inleiding tot C • Modelcomputer DRAMA • Programma´s voor DRAMA
1.1 Basisstructuur Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) Centraal GeheugenMain Memory UitvoerorgaanOutput Device InvoerorgaanInput Device HulpgeheugensSecondary Memory
Toetsenbord • Muis, stuurpook • Ponskaart-, ponsbandlezer • Lichtpen • Digitaliseertafel • Microfoon • Camera • Sensor, Meettoestel Invoerorgaan Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) Centraal GeheugenMain Memory UitvoerorgaanOutput Device InvoerorgaanInput Device Gegevens programma HulpgeheugensSecondary Memory
Beeldscherm (monitor) • Drukapparaten • Tekentafels, plotters • Luidsprekers • Ponskaart/band- eenheid • Stuurkabel (elektrisch stuursignaal) Uitvoerorgaan Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) Centraal GeheugenMain Memory UitvoerorgaanOutput Device InvoerorgaanInput Device HulpgeheugensSecondary Memory
Processor Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) Controle-orgaan Reken-orgaan Registers Opslag van: • tussenresultaten • operanden Centraal GeheugenMain Memory UitvoerorgaanOutput Device Bevelen in juiste volgorde uitgevoerd InvoerorgaanInput Device Uitvoeren van bewerkingen • zeer elementair • rekenkundig, logisch, … HulpgeheugensSecondary Memory
Geheugen Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) Centraal GeheugenMain Memory UitvoerorgaanOutput Device InvoerorgaanInput Device Direct toegankelijk HulpgeheugensSecondary Memory Bewaren
… 01010101 123 11100001 124 00000001 125 01111101 126 … Centraal Geheugen (werkgeheugen) Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) 210 = 1024 220 = 1.048.576 230 = 1.073.741.824 240 Adres0 .. Max (2n) Centraal GeheugenMain Memory Inhoud(geen interpretatie) UitvoerorgaanOutput Device InvoerorgaanInput Device HulpgeheugensSecondary Memory
Lees Adres Inhoud (waarde) Schrijf Adres Waarde Centraal Geheugen (werkgeheugen) Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) CentraalGeheugen CPU CentraalGeheugen Centraal GeheugenMain Memory CPU UitvoerorgaanOutput Device InvoerorgaanInput Device HulpgeheugensSecondary Memory
toegangstijd tijd cyclustijd Centraal Geheugen (werkgeheugen) • Geheugen met onmiddellijke toegang (Random Access Memory, RAM) • toegangstijd is onafhankelijk van het adres Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) volgendeopdracht lees-opdracht resultaat Centraal GeheugenMain Memory UitvoerorgaanOutput Device InvoerorgaanInput Device HulpgeheugensSecondary Memory
Hulpgeheugen • Eigenschappen: • Grote capaciteit • Bestendig: langere tijd bewaren • Lezen (+ soms Schrijven) • Goedkoper, trager • Voorbeelden: • (Harde/Soepele) Schijven • Magneetbanden, -cassettes • CD-ROM, CD-R, CD-RW • DVD, DVD-RAM, DVD-R, DVD-RW, DVD+R, DVD-RW … • Magneto-Optische Schijf, ZIP, JAZ, … Inwendige van de computer Centraal Verwerkingsorgaan (Processor)Central Processing Unit (CPU) Centraal GeheugenMain Memory UitvoerorgaanOutput Device InvoerorgaanInput Device HulpgeheugensSecondary Memory
Inhoud • Basisstructuur • Inleiding tot C • Modelcomputer DRAMA • Programma´s voor DRAMA
C Programmeertaal C 1.2 Inleiding tot C • Kenmerken van C • Doelstelling • Overzicht • Eenvoudige programma´s
C Kenmerken van C • Hogere programmeertaal • Grote verzameling types, (strenge) type controle • Zelf nieuwe types definiëren • Klassieke controle-structuren • Functies • Assembleertaal • Operatoren met equivalent op machine-niveau • Bewerkingen op adressen mogelijk • Basis voor … • C++, Java, C#, …
C Doelstelling • Passieve kennis van C • Begrijpen maar niet zelf kunnen schrijven • Voorbeelden: • Steunen op kennis van Java • Stijgende complexiteit
C Overzicht • Eenvoudig C • Arrays • Functies • Records • Dynamische gegevenstructuren
C Overzicht • Eenvoudig C • Declaraties, main, operatoren, opdrachten, in- en uitvoer • Voorbeeld 1-1 • if, while, samengestelde opdracht • Voorbeeld 1-5 • Switch opdracht • Arrays • Functies • Records • Dynamische gegevenstructuren
C Main – Globale variabelen Voorbeeld 1-1 int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); }
C Main – Globale variabelen Voorbeeld 1-1 int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } • Globale variabelen • Type int = integer • Declaratie vereist
C Types • Standaard types • int : voor gehele waarde • C voorziet verschillende groottes • short • int • long • Niet noodzakelijk verschillend • Geen type voor logische waardelogische waarde verwacht: • 0 false • 0 true
C Main – Globale variabelen Voorbeeld 1-1 int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } • Hoofdprogramma main • Tussen ( ) : Parameters • Tussen { } : Lichaam • Opdrachten • In voorbeelden: • geen parameters • geen lokale variabelen
C Operatoren • Uitdrukkingen • Rekenkundige operatoren (zoals Java) + - * / % • Relationele operatoren (zoals Java) > >= < <= == != • Logische operatoren &&tweede operand niet berekend indien eerste = 0 (false) | |tweede operand niet berekend indien eerste 0(true)
C Operatoren • Uitdrukkingen • Toekenningsoperator: i = 5UITDRUKKING! • Met waarde: 5 • Met neveneffect: waarde i is 5 • Klassieke fout • i = 5 • i == 5 • j = i = k = 5 • Samengestelde toekenningsoperatoren • i *= j – 3 i = i * ( j – 3 ) • += -= *= /= %= altijd waar! j = (i =(k = 5))
C Opdrachten • Opdracht • Uitdrukking gevolgd door ; • Invoer en uitvoer • C definieert geen opdrachten • In C worden functies uit bibliotheken gebruikt • Wij gebruiken • getint() leest geheel getal in en geeft dit als resultaat terug • printint ( <uitdrukking>) drukt geheel getal af • If, while, switch, …
C Voorbeeld 1-1 1000 int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } 10 –30
C If while Voorbeeld 1-5 int a, abs, i; main() { i = 1; while (i <= 10) { a = getint (); if ( a > 0 ) abs = a; else abs = -a; printint (a, abs); i = i + 1; } }
if(voorwaarde) opdracht if(voorwaarde) opdracht1 else opdracht2 C If while Voorbeeld 1-5 int a, abs, i; main() { i = 1; while (i <= 10) { a = getint (); if( a > 0 ) abs = a; else abs = -a; printint (a, abs); i = i + 1; } }
C If while Voorbeeld 1-5 • Opdracht • Uitdrukking gevolgd door ; • Samengestelde opdracht (zonder afsluitende ;) { opdracht … } • If, while, …
C If while Voorbeeld 1-5 int a, abs, i; main() { i = 1; while(i <= 10) { a = getint (); if ( a > 0 ) abs = a; else abs = -a; printint (a, abs); i = i + 1; } } while(voorwaarde) opdracht
? ? ? C Switch-opdracht switch(i - 7){ case 0: case 1: a = 0; break; case 2: a = 1; break; default: a = 2; break; } switch(uitdrukking){ case waarde1 : opdrachten1 case waarde2 : opdrachten2… default: opdrachten }
C Switch-opdracht switch (i - 7) { case 0: case 1: a = 0; break; case 2: a = 1; break; default: a = 2; break; } i == 9 i == 5 a = 1 a = 2
C Switch-opdracht switch (i - 7) { case 0: case 1: a = 0; break; case 2: a = 1; break; default: a = 2; break; } i == 8 i == 9 a = 0 a = 1 a = 2
Inhoud • Basisstructuur • Inleiding tot C • Modelcomputer DRAMA • Programma´s voor DRAMA
Reële Computer DRAMA 1.3 Modelcomputer • Verantwoording: • Basiskennis ( details) • binding commercieel beschikbare processor • DRAMA • Decimale RekenAutomaat met Meerdere Accumulatoren • Decimaal ( echte computer: binair) • Compacter, Leesbaarder voor menselijke gebruiker
1234567890 R0 1234 BT 8234872348 R1 … 1 CC R9 0000001235 1234567890 0000 7362516278 0001 … 8271683928 9999 Nooit leeg! DRAMA-computer Processor Bevelenteller Accumulatoren (Registers) Conditiecode Werkgeheugen
In voorbeelden: 1234 -1234 DRAMA: Getalvoorstelling • Gehele getallen • 10-complement (negatief: 1010 - |x| ) • Positief: 0 4.999.999.9990000000000 4999999999 • Negatief: 5.000.000.000 -15000000000 9999999999 Inwendig: 0000001234 • +1234 ? • 1234 ? 9999998766
DRAMA: Bevelenset • Bevel = (meestal) 3 delen FUNCODE ACC,OPERAND • Functiecode (3 letters): vb. HIA • Eventueel interpretatieveld: vb. HIA.w • Naam van Accumulator: vb. R0 • Operand: • Geheugenadres: vb. 1209 • Geheel getal vb. 15 • Naam van Accumulator vb. R7
DRAMA: Bevelenset • Transportbevelen • geheugenregisters accumulatoren • HIA = Haal In Accumulator • HIA R7,123 | R7 GeheugenReg[123] • HIA.w R6,10 | R6 10 • HIA R8,R7 | R8 R7 • BIG = Berg In Geheugen • BIG R7,123 | GeheugenReg[123] R7
DRAMA: Bevelenset • Rekenkundige bevelen • Basisbewerkingen: +, , , /, % • OPT, AFT, VER, DEL, MOD • Zelfde varianten alsHIA • OPT R7,123 | R7 R7 + GeheugenReg[123] • AFT.w R6,10 | R6 R6 10 • VER R8,R7 | R8 R8 R7
DRAMA: Bevelenset • Invoer / Uitvoer • Vereenvoudigd: gehele getallen lezen/schrijven • LEZ = Lezen • LEZ | R0 InvoerOrgaan • DRU = Drukken • DRU | UitvoerOrgaan R0 • NWL = Nieuwe Lijn • NWL | UitvoerOrgaan
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } Voorbeeld
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002 Voorbeeld
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002 Voorbeeld LEZBIG R0,1000
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002LEZBIG R0,1000 Voorbeeld LEZBIG R0,1001
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002LEZBIG R0,1000 LEZBIG R0,1001 Voorbeeld HIA R1,1000 VER R1,1000
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002LEZBIG R0,1000 LEZBIG R0,1001 HIA R1,1000VER R1,1000 Voorbeeld HIA R2,1001 VER R2,R2
int a, b, somk; main() { a = getint(); b = getint(); somk =a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002LEZBIG R0,1000 LEZBIG R0,1001 HIA R1,1000VER R1,1000HIA R2,1001VER R2,R2 Voorbeeld OPT R1,R2
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002LEZBIG R0,1000 LEZBIG R0,1001 HIA R1,1000VER R1,1000HIA R2,1001VER R2,R2OPT R1,R2 Voorbeeld BIG R1,1002
int a, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } | geheugenreservaties| a 1000| b 1001| somk 1002LEZBIG R0,1000 LEZBIG R0,1001 HIA R1,1000VER R1,1000HIA R2,1001VER R2,R2OPT R1,R2BIG R1,1002 Voorbeeld HIA R0,1002 DRU