Stapelgeheugen. Processoren 6 maart 2012

Vergelijkbare documenten
Computerarchitectuur en netwerken. Memory management Assembler programmering

Computerarchitectuur en netwerken. Memory management Assembler programmering

Microcontrollers Week 4 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Assembly en Assemblers. Processoren 5 januari 2015

Java virtuele machine JVM

Beter, Sneller, Mooier. Processoren 12 januari 2015

Datastructuren: stapels, rijen en binaire bomen

Samenvatting Computer Architectuur

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Datastructuren: stapels, rijen en binaire bomen

7 Omzetten van Recursieve naar Iteratieve Algoritmen

TECHNISCHE UNIVERSITEIT EINDHOVEN ComputerSystemen Deeltentamen B (weken 6..9) vakcode 2M208 woensdag 19 Maart 2003, 9:00-10:30

Beter, Sneller, Mooier. Processoren 27 maart 2012

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

De CPU in detail Hoe worden instruc4es uitgevoerd? Processoren 28 februari 2012

Examen computerarchitectuur

Geheugenbeheer. ICT Infrastructuren 2 december 2013

Deel 8: stappenmotoren en interrupts

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Hoofdstuk 7. Computerarchitectuur

11011 Processor MMI Intro. Binaire representatie. Computer: Logische opbouw (Von Neumann) 3-input 1-hot detector.

Wouter Geraedts Processen & Processoren

Examen computerarchitectuur

Tentamen Computersystemen

Lineaire data structuren. Doorlopen van een lijst

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

10 Meer over functies

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/

Linux Assembly Uitwerkingen van de vragen en opdrachten

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Introductie in C++ Jan van Rijn. September 2013

Een gelinkte lijst in C#

Hoe werkt een computer precies?

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Hoe werkt een rekenmachine?

Een eenvoudig algoritme om permutaties te genereren

Programmeermethoden NA. Week 5: Functies (vervolg)

Proeftentamen in1211 Computersystemen I (Opm: de onderstreepte opgaven zijn geschikt voor de tussentoets)

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Programmeermethoden NA

NEWCMD: CALL VOERUIT OLDCMD: DEFS 5 ;ook eventuele andre CMD's uitvoeren.

Modelleren en Programmeren

Project Software Engineering XML parser: Parsen van een xml CD catalogus

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 10e hoorcollege

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014

Computertechniek vorige examens

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden NA. Week 5: Functies (vervolg)

Modelleren en Programmeren

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

Machine-Level Programming III: Procedures

Processoren. Marc Seutter & David N. Jansen 12 November 2013

BLOK 3 HOOFDSTUK 8 PARAGRAAF 2

Semantiek (2IT40) Bas Luttik. HG 7.14 tel.: Hoorcollege 8 (7 juni 2007)

Computerarchitectuur en netwerken Toets 1 4 okt

Examen Geavanceerde Computerarchitectuur

Variabelen gebruiken in ons programma

assembleertaal F. Vonk versie

Pascal uitgediept Data structuren

Microcontrollers. Week 5 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Tentamen Programmeren in C (EE1400)

slides2.pdf April 12,

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

Programmeermethoden NA. Week 4: Files & Functies

Tentamen Compilers (2IC25) 21 juni 2010, 9.00u-12.00u

3.1! Complexe Interacties!

Practicum Ox intro. Practicum Ox intro. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam. 3 april /18

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Examen computerarchitectuur

Modelleren en Programmeren

Programmeermethoden NA

Bouwstenen voor PSE. Datatypes en Datastructuren

Hoofdstuk 5. Extra basisscherm-onderwerpen

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

Variabelen en statements in ActionScript

CompilerConstructie / Les 3 Activatierecords & Intermediaire Code

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

Processoren. Marc Seutter & David N. Jansen 10 November 2014

Maak een pivot uit een Generic.List

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Examen computerarchitectuur

Modelleren en Programmeren

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies

Zelftest Programmeren in COBOL - deel I

Pascal uitgediept Recursie

Een diverse inhoud deze keer: aangepaste procedures voor GIOS, machinetaal, geheugenmanipulatie, BASIC-equivalenten en recursief programmeren.

International Olympiad in Informatics 2013

Microcontrollers Week 5 Interrupts, Timer/Counter 0 Jesse op den Brouw INLMIC/

Lesbrief GeoGebra. 1. Even kennismaken met GeoGebra (GG)

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

1. Coroutines in C Pull Push Makefile Pull Push Push som Link...

Transcriptie:

Stapelgeheugen Processoren 6 maart 2012

Programma van komende week 7 maart 8.45: extra vragenuur over HADES 13 maart 8.45: hoorcollege vervalt, maar werkcolleges vinden plaats.

Stapelgeheugen Tanenbaum p. 246vv. handige vorm van geheugen bijna elk programma gebruikt het gebruiksmogelijkheden: tussenresultaten opslaan funcles aanroepen en lokale variabelen

BasisoperaLes van stapel PUSH = opslaan: op de stapel leggen POP = lezen: bovenste gegeven van de stapel pakken volgorde dus: LIFO = Last In, First Out

implementale van basisoperales 13 42 37 1 PUSH 25 13 42 37 1 25 POP R1 13 42 37 1 25 gereserveerd stapelgeheugen speciaal register wijst naar top van stapel PUSH = verlagen en op adres [] opslaan POP = [] lezen en verhogen R1 25

Rekenen met de stapel te weinig registers voor een berekening? gebruik de stapel voor tussenresultaten voorbeeld: bereken (a + b) * (c + d) gebruik alleen R1 en R2

Berekening: voorbeeld (bijna) Prac/cum- assembly (a + b) * (c + d) MOV a, R2 MOV b, R1 ADD R2, R1, R2 ; nu staat a+b in R2 PUSH R2 ; nu staat a+b op de stapel MOV c, R2 R1 MOV d, R1 R3 ADD R2, R1, R1, R3, R2 R1 ; nu staat c+d in R2 R1 POP R1 ; nu staat a+b in R1 MUL R2, R1, R1 ; nu staat het resultaat in R1

SubrouLne / Procedure / FuncLe Procedure in assembly: een stuk code meerdere keren uitvoeren in verschillende situales van (hoofd)programma na einde: doorgaan met hoofdprogramma, op de het plaats adres waar je voor de funcleaanroep was stapel!

FuncLes Aanroepen: parameters opslaan terugkeeradres opslaan springen naar funcle Einde: resultaat opslaan terugkeeradres terughalen springen naar terugkeeradres (meestal) op de stapel of (soms) in registers meestal in register

FuncLevoorbeeld: parameters in registers hoofdprogramma main: MOV (dividend), R2 MOV (divisor), R1 CALL div MOV R1,... func/e voor divisie div: OR R1, R1, R0 J.Z error...... MOV (quo-ent), R1 RET

hoofdprogramma FuncLevoorbeeld: parameters op stapel main: MOV (dividend), R1 PUSH R1 MOV (divisor), R5 PUSH R5 CALL div ADD 2*4,, MOV R1,... meer code maar registers blijven vrij func/e voor divisie groot aantal parameters is mogelijk div: OR R1, R1, R0 J.Z error...... MOV (quo-ent), R1 RET 2 parameters die elk 4 bytes groot zijn

Parameters op de stapel adres van parameter = + 4, 8,... Probleem: verandert als je tussenresultaten opslaat! FP FP 13 dividend divisor return- adres oude FP Oplossing: nog een register: frame pointer (of base pointer) zet FP op inilële waarde van kan veranderen, FP niet bij funcles binnen funcles: oude waarde van FP opslaan

Parameters op de stapel adres van parameter = FP + 8, 4, 12, 8,... Probleem: verandert als je tussenresultaten opslaat! Oplossing: nog een register: frame pointer (of base pointer) zet FP op inilële waarde van kan veranderen, FP niet bij funcles binnen funcles: oude waarde van FP opslaan FP FP 13 dividend divisor return- adres oude FP

Lokale variabelen van funcle stapel óók voor lokale variabelen Idee: reserveer de eerstvolgende plaatsen op stapel voor lokale variabelen adres van lokale variabele = FP 4, 8,... FP 13 parameter 2 parameter 1 return- adres oude FP lokale var 1 lokale var 2 voordeel: recursie is mogelijk

Complete administrale van funcle Func/ebegin oude FP opslaan FP := ruimte voor lokale variabelen reserveren Func/eeinde lokale variabelen vrijgeven: := FP oude FP ophalen terugkeeradres ophalen parameters vrijgeven springen naar terugkeeradres

AdministraLe op 80x86 Func/ebegin 8086 func: PUSH BP MOV BP, ; BP := SUB, (lokale variabelen) Func/eeinde 80286 func: ENTER (lokale variabelen) LEAVE RET MOV, BP POP BP RET (parameters) (parameters) voorzieningen voor funcles: gereserveerd register BP = frame pointer speciale instrucles ENTER, LEAVE

Een voorbeeldprogramma... int fibo(int n) { int temp; } if ( n <= 1 ) return 1; temp = fibo(n 1); return fibo(n 2) + temp;

Dit voorbeeldprogramma in assembly fibo: PUSH FP MOV, FP ADD 4, FP, FP # nu is [FP+8] = n en [FP 4] = temp. READ [FP+8], R1 ADD 1, R1, R1 J.G endif LOAD 1, R1 MOV FP, eigenlijk POP FP RET endif: PUSH R1 CALL fibo ADD 4,, WRITE R1, [FP 4] LOAD.G endif, PC READ [FP+8], R1 ADD 2, R1, R1 PUSH R1 CALL fibo ADD 4,, READ [FP 4], R2 ADD R1, R2, R1 # nu is R1 = het resultaat van fibo MOV FP, POP BP RET

Hoorcollege gemist? Bekijk de video- opname van vorig jaar! hsp://icto.science.ru.nl/podcasts/2011-03- 15/ ipc010- Deel_1_Processen_en_Processoren- ipod.m4v