Dark Stakkmaskin. Aritmetiske instruksjoner



Like dokumenter
Dark load-store-maskin

Introduksjon til DARK assembly

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

Dagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.

Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt

Løsningsforslag til øving 5 TFE4105 Digitalteknikk og Datamaskiner Høsten 2006

Betinget eksekvering og logiske tester i shell

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Forelesning ISA: IJVM Kap 4.2

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Oppsummering av digitalteknikkdelen

Dagens tema. Datamaskinenes historie. De første moderne datamaskiner. Løsning. Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.

Dagens tema: Enda mer MIPS maskinkode

Dagens tema. Rask-maskinen. Rasko-kode Raskas-kode. Litt datamaskinhistorie Registre og lagre Instruksjoner

En overikt. Dagens tema. Datamaskinenes historie. Rask-maskinen Litt datamaskinhistorie Registre og lagre Instruksjoner. Rasko-kode.

Maskinvaredelen av INF 103: oversikt og innhold (1)

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

Utførelse av programmer, metoder og synlighet av variabler i JSP

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

INF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april

INF1400 Kap4rest Kombinatorisk Logikk

INF225 høsten 2003 Prosjekt del 4: kodegenerering

Dagems temaer. kapittel 4 i Computer Organisation and Architecture. av CPU: von Neuman-modellen. Transfer Language (RTL) om hurtigminne (RAM)

Løsningsforslag til eksamen i INF2270

INF2270. Datamaskin Arkitektur

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

hvor mye hurtigminne (RAM) CPU en kan nyttiggjøre seg av. mens bit ene betraktet under ett kalles vanligvis et ord.

Dagems temaer INF ! Fra kapittel 4 i Computer Organisation and Architecture. ! Kort om hurtigminne (RAM)

Del 1 En oversikt over C-programmering

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Forelesning Adresseringsmodi Kap 5.4

Hvordan skrive Flok og Flass kode? I mange tilfelle er det svært enkelt:

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Dagens tema: Maskinkode. Litt datamaskinhistorie Hva er maskin- og assemblerkode? x86-prosessoren Programkode og variabler

Programmeringsspråket C Del 3

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Programmeringsspråket C Del 3

Kodegenerering, del 2: Resten av Kap. 8 pluss tilleggsnotat (fra kap. 9 i ASU ) INF5110 V2007

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder.

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs Løsningsforslag. Torsdag 29. November 2007 Kl

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Lynkurs i shellprogrammering under Linux

UNIVERSITETET I OSLO

Forelesning Instruksjonstyper Kap 5.5

Innhold. 2 Kompilatorer. 3 Datamaskiner og tallsystemer. 4 Oppsummering. 1 Skjerm (monitor) 2 Hovedkort (motherboard) 3 Prosessor (CPU)

Forelesning 5. Diverse komponenter/større system

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

INF2270. Datamaskin Arkitektur

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

Programmeringsspråket C Del 2

Intel Core i7. Omid Mirmotahari 4

Kap. 8 del 1 kodegenerering INF5110 Vår2007

Løsningsforslag til eksamen i INF103

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

INF-5110 Oppgaver kodegenerering etc. INF-5110, vår 2011

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Datamaskinens oppbygning

INF2100. Dagens tema: Flink-maskinen Litt datamaskinhistorie. Registre og lagre. Instruksjoner. Flass-koden

! Sentrale begreper er adresserbarhet og adresserom. ! Adresserbarhet: Antall bit som prosessoren kan tak samtidig i én operasjon

Stack. En enkel, lineær datastruktur

En oppsummering (og litt som står igjen)

UNIVERSITETET I OSLO

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

Sist gang (1) IT1101 Informatikk basisfag. Sist gang (2) Oppgave: Lenket liste (fysisk) Hva menes med konseptuelt og fysisk i forb med datastrukturer?

Fortsetelse Microarchitecture level

Rekursiv programmering

INF april, 2013 Kap. 8 Noen oppgaver som er meget relevante for Oblig 2

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Del 3. Pekere RR 2016

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

IN1020. Datamaskinarkitektur

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

TDT4160 OG IT2201 DATAMASKINER GRUNNKURS EKSAMEN

Øving 1: Busser, adressemodi, multiplekser og styreord

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Beskrivelse av programmeringsspråket Simpila INF Kompilatorteknikk Våren 2012

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

Institiutt for informatikk og e-læring, NTNU CPUens deler og virkemåte Geir Ove Rosvold 4. januar 2016 Opphavsrett: Forfatter og Stiftelsen TISIP

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Transkript:

Dark Stakkmaskin Figur 1: Stakk arkitektur i Dark Dette dokumentet beskriver arkitekturen til stakkmaskina som benyttes i Dark. Figur 1 viser hvordan maskinen ser ut. Det finnes et register i prosessoren, stakkpekeren (sp). Samtlige beregninger bruker det som ligger på stakken og svaret havner alltid på Dette dokumentet inneholder følgende deler: Aritmetiske instruksjoner Instruksjoner som kontrollerer programflyt Instruksjoner som endrer stakken Variabeldefinisjon Aritmetiske instruksjoner add

add stakk stakk + stakk De to øverste verdiene på stakken adresseres og summen av dem blir lagt på Verdiene som ble addert fjernes fra and and stakk stakk stakk Logisk AND mellom de to øverste verdiene på stakken beregnes og legges på band band stakk stakk stakk Bitvis logisk AND av de øverste to verdiene på Resultatet blir lagt på bnot bnot stakk stakk Bitvis logiske NOT av den øverste verdien på stakken beregnes og legges på bor bor stakk stakk stakk Bitvis logisk OR av de øvreste verdiene på stakken beregnes. Resultatet legges på bxor bxor stakk stakk stakk Bitvis logisk XOR av de to øverste verdiene på stakken beregnes og legges på

div div stakk stakk / temp De to øverste verdiene på stakken deles. Resultatet legges på stakken i steden for de to verdiene. mod mod stakk stakk % temp De to øverste verdiene på stakken deles og resten av resultatet legges på mul mul stakk stakk stakk De to øverste verdiene på stakken multipliseres og resultatet blir lagt på stakken istedefor de to verdiene. not not stakk stakk Den logiske NOT av den øverste verdien i stakken beregnes og legges på or or stakk stakk stakk Logisk OR mellom de to øverste verdiene på Resultatet legges på sub sub stakk stakk - temp

De to øverste verdiene på stakken blir subtrahert og resultatet legges på stakken i stedet for de to verdiene. xor xor stakk stakk stakk Logisk XOR av de øverste to verdiene på stakken beregnes og legges på Instruksjoner som kontrollerer programflyt call Syntaks call ETIKETT Semantikk returstakk pc pc ETIKETT Legger adressen til nåværende instruksjon på retrustakken og hopper til neste instruksjon som ETIKETT peker på. end Syntaks end { ETIKETT} Semantikk pc ETIKETT Slutt på kildekodefilen. Om ETIKETT er gitt skal prosessoren begynne å eksekvere på denne instruksjonen, ellers starter prosessoren med den absolutt første instruksjonen. eq eq stakk stakk = stakk Om de to øverste verdiene på stakken er like legges det en 1-er på stakken, ellers legges en 0-er. ge ge ETIKETT stakk stakk temp

Om den nest øverste verdien er lik eller større enn den øverste så legger man en 1-er på stakken, ellers legges en 0-er. gt gt stakk stakk < temp Om den nest øverste verdien er større enn den øverste verdien legges en 1-er på stakken, ellers legges en 0-er. jfalse jfalse ETIKETT { pc ETIKETT} Om den øverste verdien på stakken er 0 fortsetter eksekveringen med instruksjonen med ETIKETT, ellers skjer ingenting. jmp jmp ETIKETT pc ETIKETT Eksekveringen fortsetter med instruksjoen med ETIKETT jtrue jtrue ETIKETT { pc ETIKETT} Om den øverste verdien på stakken er ulik null forsetter eksekveringen med instruksjoenen via ETIKETT, eller skjer ingenting. le le stakk stakk temp Om den nest øverste verdien på stakken er minder eller lik den øverste verdien en 1-er på stakken, ellers en 0-er.

lt lt stakk stakk > temp Om den nest øverste verdien er mindre en den øverste så legges en 1-er på stakken, ellers legges en 0-er. ne ne stakk stakk stakk Om de to øverste verdiene på stakken er like legges en 0-er på stakken, ellers legges en 1-er. nop nop Denne operasjonen gjør ingen ting. ret ret pc returstakk Eksekveringen hopper tilbake fra en subrutine. stop stop - Eksekveringen avsluttes Instruksjoner som endrer stakken drop

drop? stakk Den øverste verdien på stakken tas bort. dup dup stakk temp stakk temp Den øverste verdien på stakken dupliseres. pop pop VARIABEL VARIABEL stakk Den øverste verdien på stakken legges i VARIABEL popa popa mem[temp] stakk Den øverste verdien på stakken tolkes som en adresse der neste verdi skal lagres. pull pull stakk mem[stakk] Den øverste verdien på stakken tolkes som en adresse. Fra denne adressen hentes en verdi og verdien blir lagt på push push { NUMMER VARIABEL} stakk { NUMMER VARIABEL} Verdien til variabelen/kostnaden legges på pusha

pusha VARIABEL stakk & VARIABEL Adressen til variabelen legges på stakken rot rot temp1 stakk temp2 stakk temp3 stakk stakk temp1 stakk temp3 stakk temp2 De tre øverste verdiene roteres slik at det som før låg øverst nå ligger nederst. swap swap temp1 stakk temp2 stakk stakk temp1 stakk temp2 De to øverste verdiene bytter plass. Variabeldefinisjon area area NUMMER Utvider minneområdet til den siste deklarerte variabelen med NUMMER posisjoner og kan for eksempel brukes til å lage arrayer. Dette er det imidlertid ikke behov for i dette kurset. data data NUMMER NAVN Om et nummer er gitt kommer varibelen ha denne verdien i begynnelsen av eksekveringen av programmet, ellers så er ikke verdien definert.