Forelesning ISA: IJVM Kap 4.2

Like dokumenter
1 TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Forelesning Mikroprogram for IJVM Kap 4.3

1 TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Forelesning Adresseringsmodi Kap 5.4

Fortsetelse Microarchitecture level

Litt om Javas class-filer og byte-kode

Forelesning Optimalisering av μark Kap 4.4

Fortsetelse Microarchitecture level

EKSAMENSOPPGAVE I FAG TDT4160 DATAMASKINER GRUNNKURS. D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

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

Introduksjon til DARK assembly

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

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

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Forelesning Instruksjonstyper Kap 5.5

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

Fortsetelse Microarchitecture level

TDT AUGUST, 2013, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

Løsningsforslag eksamen TDT4160 høsten 2005

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

TDT DESEMBER, 2014, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

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

TDT DESEMBER, 2013, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

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

INF225 høsten 2003 Prosjekt del 4: kodegenerering

Forelesning Forgreningspredikering Kap 4.5 Superskalaritet Kap 4.5 Spekulativ utføring Kap 4.5

Dark Stakkmaskin. Aritmetiske instruksjoner

Del 4 Noen spesielle C-elementer

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

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Kapittel 4: Microarchitecture level

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

TDT DESEMBER, 2014, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

TDT DESEMBER, 2012, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Kap. 8 del 1 kodegenerering INF5110 Vår2007

Forelesning ISA-nivået Kap 5.1

TDT AUGUST, 2011, 09:00 13:00

Runtimesystemer Kap 7 - I

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Del 1 En oversikt over C-programmering

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

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

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

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

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

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

2 Om statiske variable/konstanter og statiske metoder.

Runtime-omgivelser Kap 7 - I

Runtimesystemer Kap 7 - I

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

TDT DESEMBER, 2009, 09:00 13:00

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

TDT4110 IT Grunnkurs Høst 2015

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.

Dagens tema: Enda mer MIPS maskinkode

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

Forelesning Hurtigbuffer Kap 4.5

SIE 4005, 9/10 (4. Forelesn.)

TDT DESEMBER, 2008, 09:00 13:00

UNIVERSITETET I OSLO

IN 147 Program og maskinvare

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

TDT4160 AUGUST, 2008, 09:00 13:00

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

2 Om statiske variable/konstanter og statiske metoder.

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

TDT AUGUST, 2015, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

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

Maskinvaredelen av INF 103: oversikt og innhold (1)

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

Binære trær: Noen algoritmer og anvendelser

Kap. 8 del 1 kodegenerering INF april, 2008

Øvingsforelesning 5 Python (TDT4110)

Oversikt Kodegenerering Variabler Setninger Uttrykk While-setningen

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

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

TDT AUGUST, 2009, 09:00 13:00

Mer kodegenerering: Tilleggsnotat fra AHU Om Javas Byte-kode INF april 2009

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

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

INF1010. Grensesnittet Comparable<T>

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

Øvingsforelesning 5 Python (TDT4110)

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

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Transkript:

TDT4160 Datamaskiner Grunnkurs Forelesning 27.10 ISA: IJVM Kap 4.2

Dagens tema Repetisjon: ISA vs. mikroarkitektur ISA: IJVM (4.2) Lagring av lokale variable Minnemodell Instruksjonssett Metodekall Kompilering

ISA vs. mikroarkitektur ILOAD j ILOAD k IADD ISTORE i ILOAD i BIPUSH 3 ISA-instr. Mikroprogram: Sekvens av μinstr.

IJVM: Utførende enhet

Mic-1

ISA-eksempel: IJVM Forrige forelesning: Utførende enhet Styreenhet Format på mikroinstruksjoner Hva gjenstår? Mikroprogram for hver IJVM-instruksjon Trenger først en forståelse for hvordan IJVM fungerer (mao. hva ISA-nivået inneholder)

Lagring av lokale variable public int fibonnaci(int number) { int fibonnaci; if (number == 0) fibonnaci = 0; else if (number == 1) fibonnaci = 1; else fibonnaci = fibonacci(number 1) + fibonnaci(number 2); return fibonnaci; } Hvor skal lokale variabler lagres? Registre? Kan ha flere variabler enn registre Fast sted i hovedlager? Hva da med rekursive kall? IJVM-løsning: Stakk

IJVM: Stakk (1/2) Når en metode blir kalt, settes det av plass på stakken til alle lokale variabler Register LV (Local variables) peker til der første (nederste) variabel ligger (Register SP (Stack pointer) peker til toppen av stakken) Adressen til en lokal variabel blir LV + offset Dermed ikke absolutt minneadresse! LV- og SP-adresser er ordadresser

IJVM: Stakk (2/2) Figur 1: Metode A har tre lokale variabler Figur 2: A kaller B som har fire lokale variabler Figur 3: B kaller C som har 2 lokale variabler Figur 4: C & B returnerer, A kaller D

IJVM: Operandstakk Stakken brukes også til mellomlagring av operander Eksempel: a1 = a2 + a3 Figur 1: Push a2 (LV + 1) Figur 2: Push a3 (LV + 2) Figur 3: Pop 2 verdier fra stakk, adder, push svar Figur 4: Pop svar og legg det i a1 (LV + 0)

IJVM: Minnemodell (1/3) 32 bits ordstørrelse = 32 bits adresser Dermed maks 4 GB hovedlager Hvordan brukes hovedlager? IJVM: Ingen absolutte adresser, alle relative Dette er et IJVM-valg, ikke alle har det slik Relative adresser: Peker + offset 4 pekere definert i IJVM Dermed deles hovedlager i 4 deler

IJVM: Minnemodell (2/3) Constant Pool (CPP) Inneholder konstanter fra Java-program Leses inn ved oppstart av program, endres ikke Local Variable Frame (LV) Settes av plass til lokale variabler ved metodekall Operand Stack (SP) Midlertidig lagring av operander SP peker til topp av stakk Method Area (PC) Selve java-programmet ligger her (IJVM-instr.)

IJVM: Minnemodell (3/3)

IJVM: Instruksjonssett (1/4) Hex 0x10 0x15 0x13 0x57 0x36 0x59 0x5F Mnemonic BIPUSH byte ILOAD varnum LDC_W index POP ISTORE varnum DUP SWAP Meaning Push byte onto stack Push local variable onto stack Push constant from constant pool onto stack Delete word on top of stack Pop word from stack and store in local var. Copy top word on stack and push onto stack Swap the two top words on the stack Diverse instruksjoner for å manipulere stakken Husk: Vi må skrive mikroprogram for alle instruksjoner i instruksjonssettet

IJVM: Instruksjonssett (2/4) Hex 0x60 0x64 0x7E 0x80 0x84 Mnemonic IADD ISUB IAND IOR IINC varnum const Meaning Pop two words from stack; push their sum Pop two words from stack; push their difference Pop two words from stack; push Boolean AND Pop two words from stack; push Boolean OR Add a constant to a local variable Diverse aritmetiske instruksjoner

IJVM: Instruksjonssett (3/4) Hex 0xA7 0x99 0x9B 0x9F Mnemonic GOTO offset IFEQ offset IFLT offset IF_ICMPEQ offset Meaning Unconditional branch Pop word from stack and branch if it is zero Pop word from stack and branch if less than zero Pop two words from stack; branch if equal Instruksjoner for ubetinget og betinget hopp Hvis hopp, PC = PC + offset

IJVM: Instruksjonssett (4/4) Hex 0x00 Mnemonic NOP Meaning Do nothing 0xC4 WIDE Prefix instruction; next instruction has a 16- bit index 0xB6 0xAC INVOKEVIRTUAL disp IRETURN Invoke a method Return from a method with integer value Diverse instruksjoner WIDE fikser begrensning ved at varnum bare er 1 byte Mer om metodekall på de neste foilene

IJVM: Metodekall Java: objectreference.method(param1, ) Forenkling i IJVM: objectreference = this Steg i metodekall: Push objectreference og parametre Utfør INVOKEVIRTUAL disp disp = constant pool offset til metodeadresse Må ta vare på gammel verdi for PC og LV Oppdaterer PC med ny verdi Method Area 16 bit heltall antall parametre 16 bit heltall størrelse på Local Variable Frame Deretter selve metodekoden

INVOKEVIRTUAL

IRETURN

Kompilering: Java IJVM Opkode byte, const og varnum er 1 byte disp, index og offset er 2 bytes

Operandstakk under utføring