Sklad - splošno Kaj je sklad?

Slides:



Advertisements
Podobne predstavitve
Preberite te nasvete, če želite izvedeti, kako: 1 Prilagodite logotip
Advertisements

Avtor: Slava Jošt-Kuzman ŠC Ljubljana Knjižnica Ljubljana 2012
Specialne knjižnice Specialni knjižničarji = informacijski strokovnjaki Predavanje 2 Izr. prof. Primož Južnič
Številski sistemi Desetiški (okoli 3000 p.n.š. – Egipt)
Sindikat in svet delavcev z roko v roki
K O M B I N A T O R I K A   Obravnava posebne naloge povezane s končnimi množicami. Kompleksija je podmnožica končne množice Število elementov v kompleksiji.
Integracija tehnologij XML v projekte, ki temeljijo na objektni tehnologiji Uroš Novak, Zlatko Čajić, Borut Gorenjak, Milan Ojsteršek Laboratorij za.
Prekinitve CPE Zahteva za prekinitev Takih (prekinitvenih)
7.predavanje: življenjska doba izdelka in marketiško načrtovanje
IZRAELSKI KURIKULUM Adriana Jordan.
My EBSCOhost Vodnik support.ebsco.com.
Podatkovne baze 1 in Osnove podatkovnih baz: priprave za izpit
MANIFEST MOŠKIH (enkrat za vedno)
Številski sistemi Desetiški (okoli 3000 p.n.š. – Egipt)
Javni razpis Inovativna shema za sofinanciranje doktorskega študija Januar 2012 blllla 01/24/08.
Žiga Kern, Tim Oblak, Valentin Sojar -
Spomladansko srečanje članov ŽPS
Naslov dogodka Datum dogodka Čas dogodka
Priporočila za področje ZP
V/I prenosi Dve napravi, na primer:
Vektorji.
MINIMAKS IN NAPAKA PRI OCENJEVANJU POLOŽAJEV
Mikrokrmilnik in programiranje
ŠTEVILA PRIBLIŽNO RAČUNANJE PRIBLIŽNO RAČUNANJE
HCS12 – uporaba SCI Priprava vmesnika: Pošiljanje/sprejemanje
DATOTEKE - povzetek open(ime,'w') datPisi = open(ime,'w')
A REPORT.
BINKOŠTI homilija d. Ferruccio prevod bojanM.
PROCESORJI Učitelj: Avtor:.
NEHOMOGENA ENAČBA 1. način DIFERENCIALNE ENAČBE
NEWTONOVI ZAKONI fizika
Operacijski sistemi.
Andrej Kuzman, Matjaž Podpečan
Računalniki.
LIMITA ZAPOREDJA LIMITA FUNKCIJE
SILA.
DK – Zasnova programirljivih krmilnikov
Procesorji Intel Itanium
Znanja, usposobljenosti in upravljanje s človeškimi viri
Zgodovina Računalnikov
Vnos podatkov s tipkovnico
Strojna oprema računalnika
Osnove obdelave slike s primeri: Inspector.
Iz vsebine Okvirjenje ABP, GBN, SRP Vrednotenje Odkrivanje napak, CRC.
Dejan Zver, direktor trženja Gorenje Surovina d.o.o.
Programska oprema računalnika
Napredno iskanje na spletnem mestu EBSCOhost ~ z enim iskalnim poljem
Grafične enote.
Spremenljivke, prireditveni stavek
Če želite vstaviti ta diapozitiv v predstavitev
Kaj je Oddaljeno namizje (ON)?
RAČUNALNIŠTVO IN DOKUMENTIRANJE POMNILNIKI
DK – STEP 7 – Podatkovni bloki
program Lync v Trgovini Windows
Vodenje toplotne modelne naprave Armfield PCT-13
NAPIHLJIVA IGRALA.
Objekti, razredi, ... Od kje in zakaj.
6. poglavje: Računalniška vezja
Beseda življenja Marec 2009.
Priprava na pisno preverjanje znanja iz informatike
Naprave za masovno shranjevanje podatkov
Najkrajše poti in Bellman-Fordov algoritem
Pogostost Danj je seznam klicanih številk
Fire Wall ( Požarni zid )
Interna struktura NTFS
Breadboard eletrotehnika.
Pripravil: Šolsko leto:
Razpoznava govora z usmerjeno nevronsko mrežo
NOV PRISTOP NA PODROČJU KAKOVOSTI ZRAKA
Andrej Grah a.k.a. Burgola
Zapis predstavitve:

Sklad - splošno Kaj je sklad? Sklad (angl. Stack) je dinamična podatkovna struktura, nad katero sta (poleg inicializacije) mogoči dve operaciji: Vstavi “(angl. Push)” in Vzemi “(angl. Pull)”. Z operacijo VSTAVI damo nov podatek v (na) sklad. Z operacijo VZEMI vzamemo podatek s (iz) sklada. Sklad ima dva konca: “dno” in “vrh”. Obe operaciji (VSTAVI, VZEMI) delujeta na tistem koncu, ki mu rečemo vrh. Ko sklad inicializiramo, je prazen. Z operacijo VSTAVI se sklad polni. Z operacijo VZEMI se sklad prazni.

Sklad - splošno Ostala vsebina sklada Vrh sklada Dno sklada Podatek na vrhu sklada Tu delujeta operaciji vstavi in vzemi Ostala vsebina sklada Dno sklada Sklad torej služi za shranjevanje podatkov po principu zadnji noter, prvi ven (angl. LIFO – Last In First Out). Za hranjenje podatkov potrebujemo ustrezno pomnilno sredstvo (pomnilnik) in kazalec (register) ki določa, kje je vrh.

HCS12 in sklad Za sklad je uporabljen (katerikoli) del pomnilnika RAM (se nahaja kjerkoli v naslovnem področju pomnilnika RAM). Vrh sklada določa skladovni kazalec – register procesorja - SP. Inicializacija sklada Izberemo položaj (začetni vrh oz. dno) sklada: LDS #SKLAD ;npr. SKLAD= $4000 S tem je sklad “prazen”. Pomnilnik RAM Pomnilnik $1000 $3FFF $4000 Skladovni kazalec SP $4000

HCS12 in sklad Oparacija VSTAVI: PSHA, PSHB, PSHC, PSHD, PSHX, PSHY Skladovni kazalec se najprej dekrementira. Operand se shrani v sklad na naslov, ki ga kaže SP. Sklad torej “rase” oz. se polni proti nižjim naslovom. Npr. PSHA ; -SP, (SP)  A RAM Pomnilnik $1000 $3FFF SP $4000 $5A CPE pred Nedef. RAM Pomnilnik $1000 $3FFF SP $5A CPE po $4000

HCS12 in sklad Oparacija VZEMI: PULA, PULB, PULC, PULD, PULX, PULY Operand se vzame s sklada, t.j. z naslova, kamor kaže SP. Skladovni kazalec se nato inkrementira. Seveda se vsebina na tistem naslovu ne spremeni. Npr. PULA ;A  (SP), SP+ RAM Pomnilnik $1000 $3FFF SP ???? CPE pred $4000 $5A RAM Pomnilnik $1000 $3FFF SP $4000 $5A CPE po

HCS12 in sklad Primer: zamenjamo vsebini akumulatrojev A in B PSHA ;naj bo v akumulatorju A npr. $55 PSHB ;naj bo v B npr. $AA PULA ;sedaj je v akumulatorju A $AA PULB ;in v B gre $55 Pomnilnik za sklad $55 SP PSHA Pomnilnik za sklad $55 SP PSHB $AA Pomnilnik za sklad Pomnilnik za sklad $55 SP PULB $AA $55 SP PULA $AA $AA A $55 B $55 A $AA B

HCS12 – sklad - “tipičen primer” (Začasno) shranjevanje v sklad: PSHA ;shranjevanje v izbranem vrstnem redu PSHB PSHX ...... ;I.T.D. ...... PULX ;obnovitev v obratnem vrstnem redu PULB PULA

HCS12 – vloga sklada Pri začasnem shranjevanju podatkov (v sklad) – to smo ravnokar spoznali. Pri povezovanju programov s podprogrami (subrutinami) – shranjevanju vrnitvenega naslova v sklad, to je naslova ukaza v klicnem programu, ki sledi klicnemu ukazu. Pri streženju zahtevam za prekinitev – shranjevanje registrov procesorja (konteksta) v sklad.

Programi in podprogrami Program običajno obsega: glavni program in več podprogramov (“subrutin”). Noben (pod)program naj ne bi obsegal več vrstic kot za eno (dobro) stran. Že malo obsežnejši program narejen “v enem kosu” postane nepregleden, težko obvladljiv in za “enkratno uporabo”. Načrtovanje programa s podprogrami naredi program bolj pregleden, bolj obvladljiv, modularen, zato tudi bolj prilagodljiv in bolj uporaben. Podprogrami pa so sami po sebi potrebni tudi (in včasih predvsem) zato, ker se določena zaporedja ukazov (določene sestavljene operacije) v programu (programih) večkrat oz. pogosto ponavljajo.

Programi in podprogrami Glavni program je tisti del programa, ki se začne izvrševati, ko hočemo program izvršiti. Podprogrami (subrutine) pa se “kličejo” iz glavnega programa (klicnega programa) po potrebi, samo enkrat ali pa poljubno mnogokrat. Možen je seveda tudi klic podprograma znotraj podprograma, to je “gnezdenje” klicev. Ko govorimo o skladu in podprogramih, pa je prav sklad tisti, ki: daje podlago, da se klicni program lahko nadaljuje po vrnitvi iz klicanega podprograma, omogoča gnezdenje klicev.

Programi in podprogrami ;Podprogram SUB_A SUB_A: Ukaz 1 Ukaz 2 ...... Ukaz za povratek (RTS) ;Glavni program ....... Ukaz N-1 Ukaz N: Klic podprograma (JSR SUB_A) Ukaz N+1 Klic podprograma (JSR SUB_B) Ponovni klic podprograma (JSR SUB_B) I.T.D. ;Podprogram SUB_B SUB_B: Ukaz 1 Ukaz 2 ...... Ukaz za povratek (RTS)

HCS12 - subrutine Podprogramu (subrutini) damo primerno ime, ki sam po sebi o subrutini nekaj pove, npr.: Sestej V zbirnem jeziku je to naslov 1. ukaza subrutine Poskrbimo za prenos argumentov iz klicnega v klicni program (subrutino) in obratno, to je (vhodnih) podatkov in (izhodnih) rezultatov. Če se le da (ko jih je malo) prenašamo argumete preko registrov CPE. Zapišemo vsebino subrutine, to je zaporedje ukazov, ki spada k subrutini in realizira tisto, čemur je namenjena, to je na podlagi vhodnih podatkov da potrebni rezultat. Poskrbimo za povratek v klicni program, to je Za to imamo ukaz RTS Opomba: seveda je ukazov RTS za povratek iz iste subrutine po potrebi lahko tudi več.

HCS12 – primer subrutine ; ---------------------------------------------------------------------------------------- ; Program s podprogramom ; ; --- Splošne definicije RAMSTART EQU $1000 ;začetek pomnilnika RAM RAMSIZE EQU $2000 ;njegova velikost RAMEND EQU RAMSTART+RAMSIZE PROGRAM EQU $3000 ;začetek pomnilnika za program NPOD EQU $10 ;št. podatkov za sešteti ; --- podatki in sklad ORG RAMSTART POD: DS.B NPOD ;to naj bodo podatki za seštevanje VSOTA: DS.B 1 ;tu bo rezultat ; --- začetek glavnega programa ORG PROGRAM Start: LDS #RAMEND ;določimo sklad

HCS12 – primer subrutine ; ; --- priprava na klic subrutine ; --- podamo dejanske (vrednosti) argumentov LDX #POD ;začetek podatkov LDAB #NPOD ;število podatkov JSR SESTEJ ;klic subrutine BRA * ;neskončna zanka

HCS12 – primer subrutine ; ----------------------------------------------------------------------------------- ; Ime Subrutine: SESTEJ ; Opis: subrutina sešteje podano število 8-bitnih podatkov v pomnilniku ; Vhodni argumenti: register X: naslov prvega podatka ; akumulator B: število podatkov ; Izhod: vsota podatkov shranjena na naslovu takoj za podatki ; SESTEJ: PSHA ;shranimo registre PSHB PSHX CLRA SESTEJ0: ADDA 0,X ;računamo INX DECB BNE SESTEJ0 STAA 0,X ;shranimo rezultat (lahko tudi STAA VSOTA) PULX ;obnovimo registre PULB PULA RTS

HCS12 – ukaz JSR Ukaz: JSR ImeSubrutine prenese izvrševanje zaporedja ukazov na subrutino. V tem primeru pomeni ImeSubrutine simbolični naslov 1.ukaza subrutine. Kaj se dogaja? Vsebina programskega števca se shrani v sklad. Programski števec se polni z vsebino v polju operanda ukaza JSR (to je z naslovom 1. ukaza subrutine). S tem se izvrševanje ukazov prenese na subrutino.

HCS12 – ukaz JSR ;Klicni program ....... $3000 NOP $3001 JSR $310A SP $4000 $5A CPE pred klicem PC $3004 SP $3FFE $5A CPE po klicu PC $310A ;Klicni program ....... $3000 NOP $3001 JSR $310A $3004 NOP ;Subrutina $310A TAB $310B ....... I.T.D. $3FFE $30 Nedef. $3FFF $04 $4000 $4000 Sklad Sklad

HCS12 – ukaz RTS ;Klicni program ....... $3000 NOP $3001 JSR $310A SP $3FFE $5A CPE pred PC $3111 SP $4000 $5A CPE po PC $3004 ;Klicni program ....... $3000 NOP $3001 JSR $310A $3004 NOP ......... ....... ;Subrutina $310A TAB $310B ....... .......... ....... $3110 RTS SP $3FFE $30 $3FFE $30 $3FFF $04 $3FFF $04 SP $4000 $4000 Sklad Sklad

HCS12 – sklad in prekinitve V primeru zahteve za prekinitev procesor shrani svoj kontekst (registre) v sklad. Programski števec se polni z vsebino pomnilniške besede s ‘posebnim pomenom’ – prekinitvenim vektorjem (vektor svebuje torej naslov ukaza). Sledi prevzem in izvršitev (prvega) ukaza ter za tem vseh ostalih ukazov ‘prekinitvenega strežnika’. Zadnji ukaz prekinitvenega strežnika je ukaz RTI (angl.Return from Interrupt), ki iz sklada obnovi ob zahtevi za prekinitev shranjene registre (seveda tudi programski števec).