Datorsystemteknik DAVA14 Föreläsning 10

Relevanta dokument
Stack och subrutiner Programmeringskonventionen

Digital- och datorteknik

Digital- och datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Datorsystemteknik Föreläsning 7DAVA14

Datorsystemteknik DAV A14 Föreläsning 1

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Tentamen den 18 mars svar Datorteknik, EIT070

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Programmering i maskinspråk (Maskinassemblering)

Assemblerprogrammering, ARM-Cortex M4 del 3

Programmering i maskinspråk (Maskinassemblering)

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Enkla datatyper minne

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Assemblerprogrammering del 1

Att använda pekare i. C-kod

TDIU01 - Programmering i C++, grundkurs

Datorteknik ERIK LARSSON

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Assemblerprogrammering - fördjupning

Repetition C-programmering

LEU240 Mikrodatorsystem

Inledande programmering med C# (1DV402) Introduktion till programmering

Introduktion till programmering

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Introduktion C-programmering

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Datorteknik ERIK LARSSON

Processprogrammering och operativsystem Introduktion. Kursinformation. Varför operativsystem?

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Assemblerprogrammering för ARM del 2

Föreläsning 6 pekare och pekare tillsammans med arrayer

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Lathund. C för inbyggda system

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Program & programmering

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Datorteknik 2 (AVR 2)

Föreläsning 2. Operativsystem och programmering

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Föreläsning 10. Pekare (Pointers)

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Exempeltentamen Datorteknik, EIT070,

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Polling (cyklisk avfrågning) Avbrott

Lösningar till tentamen i EIT070 Datorteknik

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

TDDC76 - Programmering och Datastrukturer

Objektorienterad Programmering (TDDC77)

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1

Lösningar till tentamen i EIT070 Datorteknik

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/

Objektorienterad programmering i Java

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

TDIU01 - Programmering i C++, grundkurs

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Föreläsning 5: Introduktion av pekare

Datorarkitekturer med operativsystem ERIK LARSSON

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Datorsystemteknik DAV A14 Föreläsning 1

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

DIG IN TO Dator och nätverksteknik

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

F4. programmeringsteknik och Matlab

Digital- och datorteknik

Datorsystem 5. På denna föreläsning skall vi prata om Operativsystem Exempel på tenta (typ fjolårets)

Operativsystem (ID2200/06) XX XX:00-XX:00

Variabler, värden och typer

C++ Lektion Tecken och teckenfält

Variabler, värden och typer

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Imperativ programmering

Hantering av textsträngar och talsträngar. William Sandqvist

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Programmering B med Visual C

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

Institutionen för elektro- och informationsteknologi, LTH

Innehåll. Datorteknik. Abstraktionsnivå 1. Spelkonsol - blockschema. Spelkonsol abstraktionsnivå 2. Abstraktionsnivå 2

Introduktion till programmering och Python Grundkurs i programmering med Python

Transkript:

Datorsystemteknik DAVA14 Föreläsning 10 Från källkod till bitar Samspelet mellan program och hårdvara Med bilder från Mats Brorsson, Datorsystem: Program och maskinvara, studentlitteratur 1999 Assemblatorn Översätter assemblerspråk till binärkod Preprocessorn ersätter definierade uttryck med verkliga värdet. Assemblatorn översätter oftast i två faser. Fas1: räknar ut adresser skapar symboltabell (symbol,värde, typ, var), ersätter ASCII värden. Försöker fylla hoppluckor Ersätter syntetiska operationer Fas2: Översätter rad för rad Ersätter symboler med värden Assemblatorn (forts) Kompilatorn Lexikal och syntaxanalys Består av sex steg Lexikalanalys Syntaxanalys Semantisk analys Optimering Generering av maskinkod Eventuella maskinberoende optimeringar 1

Optimering Ett antal olika steg finns Eliminering av dubbla beräkningar Hoppoptimering Utbyte av tidskrävande instruktioner Optimering av slingor Inkopiering av funktioner Registerallokering Kodomstrukturering Eliminering av dubbla beräkningar Kallas CSE (Common sub-expression elimination) Ersätter beräkningar som utförs flera gånger i koden med värden. Optimerar hämtning av variabler från minne till register. Kan bara operera på ett basblock Hoppoptimering Tar bort redundanta tester Tar bort onödiga hopp Ersätter hoppkedjor genererade av kompilatorn med ett hopp. Utbyte av tidskrävande instruktioner p = a * b; p = a * 35; För första satsen genereras: mult a0,a1 #multiplikation mflo v0 #Resultat från LO (Tar 12 klockcykler att utföra 11+1) För andra satsen genereras: sll v0,a0,3 # x8 addu v0,v0,a0 # x9 sll v0,v0,2 # x36 subu v0,v0,a0 # x35 Optimering av slingor Går igenom programslingor. Börjar i innersta slingan och går utåt Flyttar beräkningar som inte beror av slingan utanför den. Förenklar uttryck som beror enkelt på iterationsvariabeln Utför loop-unrolling om det behövs och är önskvärt. int i, x[100]; for (i = 0; i < 100; i++) x[i] = 23; Registerallokering Försöker se till att ett värde ligger i register så länge som möjligt. Kan vara svårt att välja ut vilka variabler som kan ligga i minnet. Pekare? Stackvariabler? Underlättas om processorn har många register. 2

Problem med optimering unsigned char *status = (unsigned char*) 0xbfcc0020; unsigned char *keyboard = (unsigned char*) 0xbfcc0000; Problem med optimering unsigned char *status = (unsigned char*) 0xbfcc0020; unsigned char *keyboard = (unsigned char*) 0xbfcc0000; char getchar(){ while (! (*status & 0x80)) ; return *keyboard; } char getchar(){ unsigned char tmp = (*status & 0x80); while (! ymp ) ; return *keyboard; } Kod som förstör Aritmetik på tal mindre än ett ord. Utförs mindre effektivt Extrahera adressen till en lokal variabel Tvingar kompilatorn att lägga adressen i minnet i stället för i ett register. Inkapslade funktionsanrop Gör det svårare för kompilatorn att utföra register allokering Objektkod Objektkodsfilen har följande delar Filinformation Filens uppbyggnad och delarnas storlek Textsegment Programkoden Datasegment Data och storlek på statisk data Relokeringsinformation Instruktioner som består av absoluta adresser Symboltabell Felsökningsinformation Adresstilldelning Adresstilldelning 3

Operativsystem Funktionen och uppgifterna hos operativsystemet kan kort beskrivas i två punkter: Bekvämlighet Operativsystemet gör datorsystemet mer bekvämt att använda för såväl programmerare som andra användare av systemet. Effektivitet I de flesta datorsystem har operativsystemet också en uppgift att se till att datorns resurser används på mest effektiva sätt. Operativsystem Ett operativsystem har stödfunktionalitet för: Programkörning Tillgång till I/O enheter Minneshantering Kontrollerad åtkomst till filer Säkerhetsmekanismer Felhantering Utveckling (API) Systemanrop Exempel på systemanrop int fil; /* Deklarera en fildeskriptor */ int tal = 54; fil = open( minfil, O_CREAT O_WRONLY); write(fil, &tal, 4); /* Skriv ett ord */ close(fil); /* Stäng filen */ Minnesrymden Gången hos ett systemanrop 4

Processhantering Minneshantering Filsystem Ett filsystem är en samling funktioner som ger tillgång till lagring av data på disk på ett strukturerat sätt. Samma systemanrop för att exempelvis läsa filer (oberoende av typ av enhet). Filerna i ett filsystem kan inordnas i efterföljande block eller med hjälp av kedjebaserad allokering. 5