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

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

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

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

Datamaskinenes historie Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.

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

INF-103. Velkommen til. Første time. Fra brukergrensesnitt til maskinvare. eller Datamaskinen på tvers. Andre time

INF-103 Fra brukergrensesnitt til maskinvare

Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema

Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?

Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?

Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema INF1070 INF1070 INF1070

ISO Dagens tema. Tegn. Uttrykk. I Minila lagres kun heltall, men de kan tolkes som tegn. Det siste om Minila.

2 Parser. 1 Skanner. 4 Kodegenerator. 3 Sjekker. Oversikt Datamaskinhistorie x86 Kodegenerering Setninger Uttrykk.

Oversikt Deklarasjoner Typesjekk Programmering Datamaskinhistorie x86 Kodegenerering

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

Dagens tema: Semantisk sjekking. Maskinkode. Hvordan finne deklarasjoner? Hvordan programmere sjekking av riktig navnebruk?

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Oversikt Oversettelse Logging Implementasjon Oppsummering

Hvordan fant man på å lage datamaskiner?

Hvordan en prosessor arbeider, del 1

Dagens tema: Formålet. Kodegenerering NB! Introduksjon Modulen Code. Enkle variable Noen enkle setninger Uttrykk

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

Dagens tema: Formålet. Kodegenerering NB! Introduksjon Modulen Code. Enkle variable Noen enkle setninger Uttrykk

Dagens tema: Generelt om variable. Kodegenerering. Deklarasjon av array er. Versjonskontroll. Oppslag i array er

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

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

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

Oversikt Deklarasjoner Typesjekk Datamaskinhistorie x86 Kodegenerering

IN 147 Program og maskinvare

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

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

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?

Datamaskinens oppbygning

Dagens tema: Kodegenerering. Redigeringsverktøy. Versjonskontroll. Array-er Funksjoner og kall Hovedprogrammet Noen siste gode råd.

Forelesning 5. Diverse komponenter/større system

TDT4160 OG IT2201 DATAMASKINER GRUNNKURS EKSAMEN

Spørsmål: Hvilken datamaskin var den første?

Dagens tema: Enda mer MIPS maskinkode

Velkommen til INF2100

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Dark load-store-maskin

Introduksjon til DARK assembly

En oppsummering (og litt som står igjen)

Velkommen til INF2100. Bakgrunnen for INF2100. Hva gjør en kompilator? Prosjektet. Jeg er Dag Langmyhr

INF1400 Kap4rest Kombinatorisk Logikk

Spørsmål: Hvilken datamaskin var den første? Svaret Det avhenger av hva man mener med en datamaskin. Ifi. Spørsmålet Analoge Digitale Videre

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret?

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

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Oppgave 1 - Linux kommandolinje (%)

Tema for siste forelesning:

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

Spørsmål: Hvilken datamaskin var den første?

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

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

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

Litt om Javas class-filer og byte-kode

Spørsmål: Hvilken datamaskin var den første? Svaret. Det avhenger av hva man mener med en datamaskin. Spørsmålet Analoge Digitale Videre

Maskinvaredelen av INF 103: oversikt og innhold (1)

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

Spørsmål: Hvilken datamaskin var den første? Svaret. Det avhenger av hva man mener med en datamaskin. Spørsmålet Analoge Digitale Videre

Dark Stakkmaskin. Aritmetiske instruksjoner

Datamaskinarkitektur våren 2009

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Kap. 8 del 1 kodegenerering INF5110 Vår2007

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Spørsmål: Hvilken datamaskin var den første? Svaret. Det avhenger av hva man mener med en datamaskin. Spørsmålet Analoge Digitale Videre

Debugging. Tore Berg Hansen, TISIP

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

Kapittel 4: Microarchitecture level

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Tema for siste forelesning:

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

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

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

TDT4160 AUGUST, 2008, 09:00 13:00

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Velkommen til INF2100 Jeg er Dag Langmyhr

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

Datasystemer og informasjonssystemer

Minnehåndtering i operativsystemer

Læringsmål og pensum. v=nkiu9yen5nc

Forelesning Instruksjonstyper Kap 5.5

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

IN1020. Datamaskinarkitektur

UTKAST. RusC og Rask. Kompendium til INF2100. Stein Krogdahl Dag Langmyhr. UNIVERSITETET I OSLO Institutt for informatikk

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Datasystemer og informasjonssystemer

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

TDT DESEMBER, 2008, 09:00 13:00

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering

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

Oversikt Kodegenerering Variabler Setninger Uttrykk While-setningen

Operativsystemer og grensesnitt

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

Transkript:

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

Dagens tema En overikt RusC-program x = x+1; ADD R1,R2,R1 Raskas-kode Kompilator rusc raskas Raskas-assembler Rasko-kode 401020000000001... Rask-simulator rask

Charles Babbage Datamaskinenes historie Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Midt på 1800-tallet var problemet tabeller med feil. Charles Babbage konstruerte sin Difference Engine som kunne lage tabeller automatisk ved å regne ut polynomer. (Den ble først ferdig i 1991.) Han arbeidet også med en Analytical Engine som skulle bli en generell beregningsmaskin.

Charles Babbage The difference engine på Science Museum i London

Tidlige datamaskiner De første moderne datamaskiner Problemet i 1930-årene var kanoner. Det er mulig å beregne en prosjektilbane, men det er mye arbeid for en matematiker. U.S. Army Ordnance Department Ballistic Research Laboratory trengte data for dusinvis av nye kanoner. Løsning Lag arbeidsbeskrivelse, og la egne «beregnere» gjøre jobben.

Tidlige datamaskiner Fra en eldre utgave av Webster s Dictionary: computer n, one that computes; specif: an automatic electronic machine for performing calculations

Tidlige datamaskiner Problem Hver bane tok opptil 20 timer å beregne (selv med elektrisk bordregnemaskin), og man trengte 2 4000 ulike baner for hver kanon. Løsning Lag en maskin som gjør dette automatisk. Moore School of Electrical Engineering ved universitetet i Pennsylvania gjorde det med penger fra Ballistic Research Laboratory. Resultatet ble Eniac som ble ferdig i 1945. Den kunne beregne en kulebane på drøyt 10 s.

Eniac Eniac målte 2½ 1 30 m, veide 30 tonn og inneholdt 18 000 radiorør.

Eniac Oppbyggingen av Eniac Tanken var å kopiere en menneskelig beregner. Den har Aritmetisk enhet («ALU») tilsvarte regnemaskinen med de fire regneartene: + Regnemaskinen har et tall for videre beregning; datamaskinen har et register. Minnet tilsvarte et ark med mellomresultater. Datamaskinen kunne overføre innholdet av registeret til eller fra en celle i minnet. Programmet tilsvarte beregnerens arbeidsbeskrivelse. Det skulle følges helt slavisk.

Eniac Programmet Et program for datamaskinen inneholdt de samme elementene som beregnerens arbeidsbeskrivelse: Aritmetiske operasjoner var mulig i de fire regneartene; svaret kom i registeret. Mellomlagring av data skjedde ved at registeret ble kopiert til en angitt celle i minnet. Hopp til en angitt instruksjon var nødvendig for å kunne gå i løkker. Tester i forbindelse med hopp var typisk på om registeret var < 0, = 0 eller > 0. Programmene ble etter hvert kodet som tall (mens Eniac ble kodet med kabler).

Rask-maskinen MIPS-prosessoren Rask-maskinen er en forenklet MIPS-prosessor.

Rask-maskinen MIPS-prosessoren var meget populær på 1990-tallet og brukes ennå, spesielt i spillmaskiner.

Rask-maskinen Rask-maskinen Minne: Inneholder 10 000 celler som kan inneholde enten data eller instruksjoner. 33 registre: R 0 inneholder alltid 0. R 1 R 31 inneholder data. PC gir adressen til neste instruksjon.

Programutførelsen Programutførelsen Instruksjonene utføres alltid én og én: PC = 0; while (true) { if (PC == 9990) break; } (CF,CA,CB,CC) = split Mem[PC]; PC = PC + 1; utfør instruksjonen (CF,CA,CB,CC)

Instruksjonene Instruksjonene Nr Navn Operasjon 1 LOAD R A, C R A Mem[R B +C] 2 SET R A, C R A R B +C 3 STORE R A, C Mem[R B +C] R A

Instruksjonene Nr Navn Operasjon 4 ADD R A, R C R A R B +R C 5 SUB R A, R C R A R B R C 6 MUL R A, R C R A R B R C 7 DIV R A, R C R A R B /R C

Instruksjonene Nr Navn Operasjon 8 EQ R A, R C R A 1 hvis R B =R C, ellers 0 9 NEQ R A, R C R A 1 hvis R B R C, ellers 0 10 LESS R A, R C R A 1 hvis R B <R C, ellers 0 11 LESSEQ R A, R C R A 1 hvis R B R C, ellers 0 12 GTR R A, R C R A 1 hvis R B >R C, ellers 0 13 GTREQ R A, R C R A 1 hvis R B R C, ellers 0 14 JUMPEQ R A, C Hvis R A =R B, PC C 15 JUMPNEQ R A, C Hvis R A R B, PC C

Instruksjonene Nr Navn Operasjon 16 CALL R A, C R 31 PC og PC C 17 RET PC R 31

Instruksjonene Representasjon av instruksjoner En Rask-instruksjon lagres slik: 2 2 2 10 {}}{{}}{{}}{{}}{ xx }{{} xx }{{} xx }{{} xxxxxxxxxx }{{} F A B C

Magiske adresser Spesielle adresser Fem standardfunksjonen utgjør «operativsystemet» og ligger i faste adresser: Adresse Funksjon 9990 exit(r 11 ) 9991 getchar() 9992 getint() 9993 putchar(r 11 ) 9994 putint(r 11 )

Eksempel på Rask-kode Et eksempel Dette programmet skriver ut et utropstegn: 211000000000033 1600000000009993 211000000000001 1600000000009990

Rasko-koden Rasko-koden For å få Rask-maskinen til å utføre koden, må vi «pakke den tekstlig inn» i såkalt Rasko-kode: #! /local/bin/rask 211000000000033 1600000000009993 211000000000001 1600000000009990

Rasko-koden > rask utrop.rask! DUMP ==== PC=9990 Last 6 instructions: 0 1 9993 2 3 9990 Registers R0= 0 R1= 0 R2= 0 R3= 0 R4= 0 R5= 0 R6= 0 R7= 0 R8= 0 R9= 0 R10= 0 R11= 1 R12= 0 R13= 0 R14= 0 R15= 0 R16= 0 R17= 0 R18= 0 R19= 0 R20= 0 R21= 0 R22= 0 R23= 0 R24= 0 R25= 0 R26= 0 R27= 0 R28= 0 R29= 0 R30= 0 R31= 4 Memory 0: 211000000000033 1600000000009993 211000000000001 1600000000009990 <skipped 0-lines>

Raskas-koden Raskas-kode For å gjøre det enklere å skrive Rasko-kode, har man funnet på Raskas. Da kan man bruke navn istedenfor tallkoder bruke navn på datalokasjoner sette navn på instruksjoner (for å hoppe dit)

Raskas-koden Eksempel: nexta.raskas # Et minimalt testprogram: # Det ber om et tall v og skriver så ut v+1. main: SET R11,? #? CALL putchar # putchar( ); CALL getint # R1 = getint(); SET R3,1 # 1 ADD R11,R1,R3 # R11 = R1+ ; CALL putint # putint(r11); SET R11,0 # 0 CALL exit # exit( );

Raskas-koden Kodefilen Den genererte Rasko-filen ser slik ut: #! /local/bin/rask 211000000000063 1600000000009993 1600000000009992 203000000000001 411010000000003 1600000000009994 211000000000000 1600000000009990

Raskas-koden Kjøringen går slik: > raskas nexta.raskas > rask nexta.rask?322 323

Raskas-koden Oversikt laget av programmet raskas Raskas assembler version 1.0 Source file: nexta.raskas # Et minimalt testprogram: # Det ber om et tall v og skriver så ut v+1. 0: 2 11 0 63 main: SET R11,? #? 1: 16 0 0 9993 CALL putchar # putchar( ); 2: 16 0 0 9992 CALL getint # R1 = getint(); 3: 2 3 0 1 SET R3,1 # 1 4: 4 11 1 3 ADD R11,R1,R3 # R11 = R1+ ; 5: 16 0 0 9994 CALL putint # putint(r11); 6: 2 11 0 0 SET R11,0 # 0 7: 16 0 0 9990 CALL exit # exit( ); Program labels: exit 9990 getchar 9991 getint 9992 main 0 putchar 9993 putint 9994

RusC, Rask, Rasko og Raskas Oppsummering Vi har sett på instruksjonene og registrene i Rask. Rask-maskinen leser filer med Rasko-kode. Det er lettere å skrive assemblerkoden Raskas enn maskinkoden Rasko.