DComNet1 ISA-niveauet (1) Machine Language: You try to shoot yourself in the foot only to discover you must first reinvent the gun, gunpowder, the bullet,

Slides:



Advertisements
Lignende præsentationer
Niveauer af abstrakte maskiner
Advertisements

Grundlæggende IT Lektion 4 Sådan virker pc’en
Velkommen til Softwarekonstruktion
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
ISA-niveauet (1) Machine Language: You try to shoot yourself in the foot only to discover you must first reinvent the gun, gunpowder, the bullet, and your.
Pc-kørekort Sådan virker pc’en Keld Hinsch.
1 Pentium IA-32 Maskinarkitekturen. 2 Historie (1) Starter i 1970 med udviklingen af Intel 4004:
1 Pentium IA-32 Maskinarkitekturen Kort resume – uge 5.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Symbolsk maskinsprog.
Computer netværk og TCP/IP protokoller Kort resume – uge 6
Oversættelse af Java-programmer JavaBytecode javac Normalt oversættes Java-programmer til bytecode, som fortolkes af en JVM (Java Virtual Machine). Java.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
Grundlæggende programmering Efterår 2001
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 2 BRP.
DComNet1 Computere og Netværk (dComNet) Jens Kargaard Madsen Jens Bennedsen
Program for fremlæggelse
DComNet1 Computer netværk og TCP/IP protokoller. dComNet2 Maskinarkitektur.. fokus på intern organisation af en enkelt computer:
Begreber og Redskaber 3 BRP.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Objekter og klasser Rasmus D. Lehrmann DM
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
DComNet1 Computere og Netværk (dComNet) Jens Kargaard Madsen Jens Bennedsen
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
DComNet1 Computer netværk og TCP/IP protokoller. dComNet2 Maskinarkitektur.. fokus på intern organisation af en enkelt computer:
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Fundamentale sprogbegreber
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Process Control Hardware baggrund Process begrebet i et OS Process tilstande Context switching.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
DComNet1 ISA-niveauet (2). dComNet2 Niveauer af virtuelle maskiner ISA niveauet / maskinkodeniveauet / maskinniveau.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Indledende Programmering Uge 6 - Efterår 2006
DMasArk1 Pentium IA-32 Maskinarkitekturen. dMasArk2 Historie (1).. starter i 1970 med udviklingen af Intel 4004:
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Et Audio/ Video Framework Et framework for en audio/video applikation baseret på lokale og kilder tilgængelige på 1394 via AV/C protokollen.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Embedded SW – C & picoBlaze
Præsentationens transcript:

dComNet1 ISA-niveauet (1) Machine Language: You try to shoot yourself in the foot only to discover you must first reinvent the gun, gunpowder, the bullet, and your foot.

dComNet2 Niveauer af virtuelle maskiner højniveausprog symbolsk maskinkodeniveau ISA niveauet / maskinkodeniveauet / maskinniveau

dComNet3 Instruction Set Architecture Level Grænseflade mellem hardware og software: Interessant for maskinkodeprogrammører (eks: device drivere, optimering) og oversættere (compilere). Fysisk maskine: Pentium, UltraSPARC, Intel 8051,… …. k = 6-i-j oversættelse

dComNet4 Fornuftige spørgsmål om en maskine 1. Hvad skal maskinen bruges til? 2. Hvordan programmeres maskinen? 3. Hvordan er maskinen opbygget?

dComNet5 Svar for ISA-niveauet 1.Hvad skal maskinen bruges til? Til afvikling af programmer skrevet i højniveausprog. 2. Hvordan programmeres maskinen? I maskinkode, men i praksis skrives programmer i symbolsk maskinkode, som derefter oversættes til absolut maskinkode. 3.Hvordan er maskinen opbygget? Baseret på von Neumann maskinarkitektur.

dComNet6 Opbygning og begreber Begreber: Kontrol- og beregningsenhed, registre. Lager, lagerceller, lagermodellen. Maskininstruktioner (ordrer), instruktionssæt, ordreformat. Ydre enheder (I/O devices). Afvikle absolut maskinkode gemt i lageret (Main memory)

dComNet 7 Instruktionsformat og repræsentation k = 6-i-j; bipush 6 0x10 0x06 iload 1 0x15 0x01 isub 0x64 iload 2 0x15 0x02 isub 0x64 istore 3 0x36 højniveauSymbolsk maskinkode absolut maskinkode Absolut maskinkode her opskrevet i hexadecimal notation, men ligger i binær representation i lageret.

dComNet8 Udførsel af maskinkode 1.Fetch the next instruction from memory into the instruction register. 2.Change the program counter to point to the following instruction 3.Determine the type of instruction just fetched. 4.If the instruction uses a word in memory, determine where it is. 5.Fetch the word, if needed, into a CPU register. 6.Execute the instruction. 7.Go to step 1 to begin executing the following instruction. Via fetch-decode-execute cycle (SCO s. 54): Hver iteration af løkken udfører en maskininstruktion.

dComNet9 Udførsel af maskininstruktion Involverer oftest den aritmetisk logiske enhed (ALU’en): Operander må typisk hentes ind fra lageret før ALU’en kan opererer på dem ifm. udførsel af instruktionen.

dComNet10 Registre Kontrolinformation program counter instruktionsregister stack pointer stack frame pointer … Operander Ikke alle registre er tilgængelige for ISA-programmøren. Kan lagre et antal bit afhængig af registerbredden.

dComNet11 Lageret Indeholder program og operander (data). Organiseret som sekvens af celler som hver lagrer et antal bit: Celler i lageret udpeges af adresser 0,...,n-1. 1 byte er 8 bit

dComNet12 Maskinord Celler grupperes i maskinord (words) Typisk 4 eller 8 byte (32 eller 64 bit). Størrelsen er typisk relateret til bredden af registre på maskinen.

dComNet13 Foreløbig opsummering Maskinordrer (programmet) befinder sig i lageret. Operander (data) befinder sig i lageret og i registre. Kontrolinformation befinder sig i registre. Hvordan tilgås operander i lageret? Hvordan implementeres metodekald i maskinkode?

dComNet14 IJVM Simplificering Java’s Virtuelle Maskine (JVM): Kun heltalsoperationer og ingen objektorientering.

dComNet15 IJVM ordreformat

dComNet16 Eksempel: ordreformat bipush 6 0x10 0x06 iload 1 0x15 0x01 isub 0x64 iload 2 0x15 0x02 isub 0x64 istore 3 0x36

dComNet17 IJVM Lagermodel Opdelt i tre områder (konstant pool, stakken, method area): Indlejret i et 4Gb lineært lager: celler (1 byte/celle). 32 bit8 bit32 bit

dComNet18 IJVM registre Program Counter (PC): 32-bit register Udpeger aktuel instruktion (byte) i method area. Stack Pointer (SP) : 32-bit register Udpeger øverste element (word) på stakken. Local Variable Frame Pointer (LV): 32-bit register Udpeger bunden (word) af det aktuelle stakafsnit. Constant Pool Pointer: 32-bit register Udpeger bunden (word) af konstant pool i lageret Ingen registre kan direkte tilgås via IJVM instruktioner.

dComNet19 Udførsel af instruktioner Ændrer maskinens tilstand jf. ”Meaning”: bipush 6 0x10 0x06 (PC, SP, LV, Stak) → (PC', SP', LV', Stak')

dComNet20 Stakken En “abstraktion” ovenpå lageret. Bruges til at lave beregninger: Bruges til udførsel af metodekald:

dComNet21 Rekursive metodekald /* towers.java */ public class towers { public static void towers(int n, int i, int j) { int k; if (n == 1) System.out.println ("Move a disk from " + i + " to " + j); else { k = 6 - i - j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); } public static void main(String[] args) { towers(3, 1, 3); } Værdier af parametre er lokale for hver instans? Returnering til den korrekte instans ved terminering?

dComNet22 Metodekald Understøttes af instruktionerne: invokevirtual, ireturn, iload, istore Baseret på begrebet stakafsnit (stack frame): –Etableres når en metode kaldes ( invokevirtual ). –Nedlægges når metoden returnerer ( ireturn ). Et stakafsnit indeholder: –Argumenter/parametre for metoden (tilgås via iload ) –Værdier for lokale variable (tilgås via iload/istore ) –Kontrolinformation til genetablering af tilstand. Registret LV udpeger altid bunden af det aktuelle stakafsnit.

dComNet23 invokevirtual callee

dComNet24 ireturn

dComNet25 ?

dComNet26 IJVM ISA-niveau Kan implementeres via et mikroprogram på Mic-1 mikroarkitekturen:

dComNet27 IJVM Simulator Kan afvikles på alle DAIMI Linux-maskiner efter daimi-setup -a /users/kursus/dArk/dArk-tools ijvm-asm oversætter fra symbolsk IJVM maskinkode ijvm simulerer udførelsen af IJVM maskinkode Læs i IJVM Tools Manual tilgængelig via hjemmesiden. Afvikler IJVM maskinkode som om den var en fysisk arkitektur.

dComNet28

dComNet29

dComNet30.method main // int main.args 3 // ( int a, int b ).define a = 1.define b = 2 // { bipush 88 // Push object reference. iload a iload b invokevirtual min ireturn // return min ( a, b ); // } test.j

dComNet31.method min // int min.args 3 // ( int a, int b ){.define a = 1.define b = 2.locals 1 // int r;.define r = 3 iload a // if ( a >= b ) iload b isub // stack = a - b,... ; a - b a < b iflt else iload b // r = b; istore r goto end_if else: // else iload a // r = a; istore r end_if: iload r // return r; ireturn // }

dComNet32 test.j main index: 0 method area: 40 bytes b ac b 00 0a a ac constant pool: 2 words e oversættes til ijvm-asm test.j test.bc fortolkes af ijvm test.bc IJVM simulator

dComNet33 main index: 0 method area: 40 bytes bipush iload iload 2 10b invokevirtual 1 13acireturn iload iload isub 239b 00 0aiflt iload istore 3 30a goto iload istore iload 3 39acireturn constant pool: 2 words e Antal argumenter for main Antal lokale variable for main Start adresse for main Start adresse for min

dComNet34 IJVM Trace of foo stack = 0, 1, 43, 77, 15 bipush 88 [10 58] stack = 88, 0, 1, 43, 77, 15 iload 1 [15 01] stack = 77, 88, 0, 1, 43, 77, 15 iload 2 [15 02] stack = 43, 77, 88, 0, 1, 43, 77, 15 invokevirtual 1 [b ] stack = 12, 13, 0, 43, 77, 21, 0, 1 iload 1 [15 01] stack = 77, 12, 13, 0, 43, 77, 21, 0 iload 2 [15 02] stack = 43, 77, 12, 13, 0, 43, 77, 21 isub [64] stack = 34, 12, 13, 0, 43, 77, 21, 0 iflt 10 [9b 00 0a] stack = 12, 13, 0, 43, 77, 21, 0, 1 iload 2 [15 02] stack = 43, 12, 13, 0, 43, 77, 21, 0 istore 3 [36 03] stack = 12, 13, 43, 43, 77, 21, 0, 1 goto 7 [a ] stack = 12, 13, 43, 43, 77, 21, 0, 1 iload 3 [15 03] stack = 43, 12, 13, 43, 43, 77, 21, 0 ireturn [ac] stack = 43, 0, 1, 43, 77, 15 ireturn [ac] stack = 43 return value: 43 ijvm test.bc 77 43

dComNet35 Opsummering ISA-niveauet: Maskininstruktioner og instruktionsformat. Absolut maskinkode. Registre og lagermodellen. IJVM maskinen: Registre: PC, SP, LV, CPP. Lagermodel: method area, constant pool, stakken. Metodekald og stakafsnit, parametre og lokale variable. IJVM simulatoren