Oversættelse af Java-programmer JavaBytecode javac Normalt oversættes Java-programmer til bytecode, som fortolkes af en JVM (Java Virtual Machine). Java.

Slides:



Advertisements
Lignende præsentationer
Hvordan man logger ind på Dansk ACL database
Advertisements

Grundlæggende IT Lektion 4 Sådan virker pc’en
Begreber og Redskaber 6. Afprøvning Formål: •Ekstern afprøvning (Funktionstest). •Hvordan dokumenterer man afprøvning i en rapport. •Hvordan konstuerer.
MIA - CAD Gennemgang af MIA-måleblade (eksempel) Først generel intro
Pc-kørekort Sådan virker pc’en Keld Hinsch.
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
Symbolsk maskinsprog.
Lavet af: Paw Petersen Design Design Class Diagram (DCD)
NetBeans Installation og brug.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Eksamens navn Dit navn. Oversigt  Spørgsmål nummer 1 Spørgsmål nummer 1  Spørgsmål nummer 2 Spørgsmål nummer 2  Spørgsmål nummer 3 Spørgsmål nummer.
Computerens Anatomi - Processoren. En computer er et system. Som udgangspunkt består en personlig computer i dag af 7 delsystemer.  Bundkort  Kabinet.
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.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Pc-kørekort Mere om software. Programmering Definition: at skrive et program ved hjælp af en tekst–editor på en måde, som computeren kan forstå Instruktionerne.
Begreber og Redskaber 2 BRP.
CLR (.NET) og JVM 1.NET vs. Java.NET har fokus på sprog-uafhængighed … Java har fokus på platforms-uafhængighed … Windows OS.NET CLR IL kode (.exe,.dll)
Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Grundlæggende elementer i UML
Forelæsning 3.1 Collections Javas for-each løkke
Begreber og Redskaber 3 BRP.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
W1b1 PC baseret analyse og simulering. w1b2 Definition Digital Elektronisk beregningsmaskine, der har intern hukommelse til lagring af program og mellem-regninger.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Procestræ under afvikling af cp init login shell cp cp src dest.
Transaktioner og ACID Spørgsmål 8. Transaktioner og ACID ACID (Atomicity, Consistency, Isolation, Durability) ACID-egenskaber er sæt egenskaber, der garanterer.
Fremstilling af Simple WEB steder [ITPL] Foråret 2004
8.5 JDBC1 JDBC 8.5 Java Database Connectivity. 8.5 JDBC2 JDBC introduktion, 393 JDBC er ikke en forkortelse for –Java Database Connectivity Sun har defineret.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
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;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
DComNet1 ISA-niveauet (2). dComNet2 Niveauer af virtuelle maskiner ISA niveauet / maskinkodeniveauet / maskinniveau.
Implementation i Software Hvad skal implementeres? Abstraktionsniveauer Assembler- og Højniveausprog Udveksling af Parametre Anvendelse af højniveausprog.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
(Tal)repræsentation Jens Bennedsen.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering Exceptions.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmeringAlgebra.1 Algebraiske begreber Tal, sandhedsværdier og figurer.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
DMasArk1 Pentium IA-32 Maskinarkitekturen. dMasArk2 Historie (1).. starter i 1970 med udviklingen af Intel 4004:
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
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.
DAIMIIntroducerende objektorienteret programmering2C.1 Algebraiske begreber Tal, sandhedsværdier og figurer.
FEN IntroJava AAU1 Introduktion til programmering Et program: HelloWorld Objekter og klasser.
UProcessorens hardware Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed.
Programmering I Java/C# Datatekniker Dit første projekt.
Fromelle sprog Per P. Madsen Afd. for proceskontrol.
Computerens talsystem
Forelæsning Uge 2 – Torsdag
Programmering 1 Java/C#
Quiz Uge 2 – mandag.
Velkommen til B klassen
Programmering.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
ROBOTTERNE KOMMER - OZOBOTTERNE.
Tråde & Executors – uge 2.
Tråde & Executors – uge 2.
Præsentationens transcript:

Oversættelse af Java-programmer JavaBytecode javac Normalt oversættes Java-programmer til bytecode, som fortolkes af en JVM (Java Virtual Machine). Java kan (ligesom alle andre sprog) også oversættes til maskinkode. Normalt vil oversættelse af Java være via bytecode og i form af JIT-kompilering (Just-In-Time). JavaBytecode javac Maskinsprog jit- oversætter

Håndoversættelse fra Java til Lippiatt++ JavaLippiatt++ hånd- kraft Krav om korrekt håndtering af: addition ram/cpu dataoverførsel løkke procedurekald Ikke krav om håndtering af klasser/objekter i/o

Maskinprogram = sekvens af maskininstruktioner, der udføres 1 ad gangen CPU-cyklus = 1. Hent instruktion. 2. Udfør instruktion. Anbring næste instruktion i IR Inkrementer IP start Udfør instruktion i IR Stop? stop

Syntaks af maskininstruktioner (Lippiatt++)

Maskininstruktion = operationskode + operander rrrr mmmmmmmm Op-kode # Operand

Symbolsk maskinsprog (assembler-sprog) STORE R M - er den symbolske maskininstruktion, der svarer til (den "rigtige") maskininstruktion Op-kode erstattet af symbolsk navn på operationen. Register-numre erstattet af variable R0,R1,.. RAM-adresser erstattet af vilkårlige variable M,X,Y,.. Assembleren oversætter assemblerinstruktioner til maskininstruktioner 1-til-1. Semantik af assembler- og maskininstruktioner kan derfor behandles under et.

Relevante tolkninger (jf. Lippiatts "klassifikation") af binære data Alphanumerisk information: tegn, f.eks. A= Numerisk information: det binære talsystem: =65 Kontekstafhængig information: brug af bits til at repræsentere en persons køn etc. (måske bedre at bruge String sex = female etc.)

Semantik (effekt af udførelse) STORE R M / Effekten af at udføre STORE R M er at kopiere indholdet af RAM-adressen M til registeret med nummeret R. Kan også skrives: [M] <- [R] Den variable M oversættes af assembleren til f.eks Den variable R oversættes af assembleren til f.eks

CPU/RAM dataoverførsel LOAD M R STORE R M Intra cpu dataoverførsel MOVE R R' LOADCONST [R] Const Aritmetik ADD R R' SUBTRACT R R' Control flow JUMP M JUMP_POS0 R M CALL M RETURN Instruktionssættet i Lippiatt++

Symboler i flowdiagram start stop LOAD, ADD etc. Pil til næste instruktion JUMP_POS0 Instruktion (alm) betinget hop-instruktion

Flowdiagram for Count start Initia- lisering i <.. stop process_record() i=i+1

Oversættelse af i=i+1 ADD R0 R1 Forudsætning: R0 indeholder i. R1 indeholder konstanten 1.

Oversættelse af N=N+X (jf. Lippiatt s ) LOAD N R1 ADD R1 R0 STORE R1 N Register R0 indeholder en værdi (nemlig X) vi vil lægge til indholdet af memoryadresse N Kun få af instrutionerne er egentlige aritmetiske eller logiske operationer, de fleste er dataoverførsler. Operander skal være i cpu-registre.

Oversættelse af i=i+1 Nu uden forudsætning om at i og 1 allerede er overført til cpu-registre !! LOAD I R0 LOADCONST R1 1 ADD R0 R1 STORE R0 I

Oversættelse af løkkens betingelse (i <.. ?) MOVE R0 R3 SUBTRACT R3 R2 JUMP_POS0 R3 A2 Forudsætninger R0 indeholder i. R2 indeholder værdien af Integer.ParseInt(args[0]) A2 er adressen på den instruktion, der skal udføres hvis vi skal ud af løkken Ide: Testen (i = 0). Kun hop hvis vi skal ud af løkken.

Oversættelse af procedurekald CALL PR.. PR:.. RETURN Virker fordi RETURN bruger SP-registret til at hente adressen på den instruktion, der skal fortsættes med efter procedurekaldet. Den er nemlig gemt pga. CALL Bemærk at vi i symbolsk assembler også har etiketter/labels.

Implementation af CALL og RETURN uden brug af SP CALL PR.. PR:.. RETURN [Q] <- [PC] [PC] <- PR [PC] <- [Q] Denne løsning kan ikke håndtere indlejrede ("nestede") procedurekald !

Implementation af CALL og RETURN (med rekursion) CALL PR.. PR:.. RETURN Retur-adresser for mere end et procedurekald gemmes på stakken. Indholdet af SP-registret er adressen på toppen af stakken. [[SP]] <- [PC] [SP] <- [SP]-1 [PC] <- PR [SP] <- [SP]+1 [PC] <- [SP]

Vinkel: Operativsystemet skaber et antal "virtuelle maskiner" (jf. Tanenbaum 1.4.3) Maskine Maskinsprog Øvrige operativsystem Skedulatordel af operativsystem Systemprogrammer (andre end OS) Applikations- programmer

Monolitisk kerne vs. mikro-kerne Monolitisk kerne 1 stort program Uoverskueligt (måske) Alt kører i kerne-mode, dvs. risikabelt Linux, Windows 95/98 Tanenbaum: "Linux is obselete.." Mikro-kerne Modulopdeling Kun det mest nødvendige kører i kerne-mode Pris i form af tid til kontekstskift Windows NT/2000