Notater: INF2270 Assembler
|
|
|
- Siri Ødegård
- 9 år siden
- Visninger:
Transkript
1 Notater: INF2270 Assembler Veronika Heimsbakk 11. juni 2014 Innhold 1 Registere 2 2 Assembler-programmering Instruksjoner Variabler Byte, ord og langord Multiplikasjon Divisjon Flagg Maskeoperasjoner Hopp Alignment Bit-operasjoner Stakken 8 4 Flyt-tall Standarden IEEE 754 for 32-bits flyt-tall Regne med flyt-tall Aritmetiske operasjoner Sammenligninger
2 Introduksjon Dette er mine eksamensnotater i kurset INF2270 Datamaskinarkitektur som jeg tok våren 2014 ved Institutt for informatikk, Universitetet i Oslo. Notatene er basert på forelesningsfoiler, egne notater (hovedsakelig fra INF1400 Digital design) og pensumbøkene. Disse inneholder sikkert en del feil og mangler, ikke stol på de. Men send meg gjerne en e-post om det er noen innvendinger. 1 Registere %AX %EAX %AH %AL %EBX %BH %BL %ECX %CH %CL %EDX %DH %DL Spesielle 16-bits registere: %CS, %DS, %ES, %FS, %GS, %SS, og spesielle 32-bits registere: %EFLAGS, %EIP. Konvensjonen er at %EAX, %ECX og %EDX er frie regis- Frie registere tere. Bundne registere De andre registerne er bundne registere. Om de endres, må man ta vare på den opprinnelige verdien og sette denne tilbake før retur. 2 Assembler-programmering En testfunksjon som returnerer verdien g l o b l n i n e t e e n 2 nineteen : 3 movl $19, %eax 4 r e t Følgende C program kan teste funksjonen: 1 #i n c l u d e <s t d i o. h > 2 3 extern i n t n i n e t e e n ( void ) ; 4 2
3 5 i n t main ( void ) 6 { 7 p r i n t f ( n i n e t e e n ( ) = %d\n, n i n e t e e n ( ) ) ; 8 return 0 ; 9 } 2.1 Instruksjoner Hvor - tilsvarer w (word), b (byte), eller l (long). mov- Flytt en verdi. add- Adder en verdi til en annen. sub- Subtraher. inc- Øk en verdi med 1. dec- Senk en verdi med 1. ret Returner fra funksjon. $17 Konstant. neg- Negasjon (med fortegn). imul- Multiplikasjon (med fortegn). div- Divisjon. jmp Hopp. cmp- Sammenligne. lea- Fungerer som mov, men henter adressen istedet for verdien.. %eax Registeret %EAX. 4(%esp) Parametre på stakken. 2.2 Variabler 1. t e x t 2 move : 3 movl $3, %eax 4 movl 4(%esp ), %eax 5 movl %eax, var 6 r e t 7 8. d a t a 9 var :. l o n g 17 # En long med v e r d i a r r :. f i l l 8 # 8 byte uten i n i t i a l v e r d i 3
4 Man kan sette av plass til variabler med spesifikasjonen.long eller.fill. De bør legges i.data. Faste variabler Disse lever så lenge programmet kjører. De kan gis en initialverdi. Det vanlige er å legge slike variabler i.data-segmentet. 1. g l o b l a, b, d, f 2. t e x t 3 f : r e t 4. d a t a 5 a :. l o n g 0 6 b :. l o n g 0 7 c :. b y t e 0 8. a l i g n 2 9 d :. l o n g 5 Tilsvarende i C: 1 i n t a, b ; 2 s t a t i c char c ; 3 long d = 5 ; 4 5 void f ( void ) {} 2.3 Byte, ord og langord mov- finnes for byte, word (2 byte) og long (4 byte): 1 movb $0x12, %a l 2 movw $0x1234, %ax 3 movl $0x , %eax 2.4 Multiplikasjon I tillegg til imulw/imull, finnes en versjon som jobber med faste registere: mulb og imulb jobber med %AX, mulw og imulw jobber med %DX:%AX, og mull og imull jobber med %EDX:%EAX. 4
5 2.5 Divisjon Divisjon gir to svar (kvotient og rest). Den er også litt rar når det gjelder registerbruk: divl og idivl får svar i %EAX og rest i %EDX. divw og idivw får svar i %AX og rest i %DX, divb og idivb får svar i %AL og rest i %AH. Eksempel. 1. g l o b l div10 2 # C s i g n a t u r : unsigned i n t div10 ( unsigned i n t v ) 3 div10 : 4 movl 4(%esp ), %eax # %eax = v 5 movl $0, %edx # %edx : 6 movl $10, %ecx # %ecx = 10 7 d i v l %ecx # (%eax, %edx ) = 8 # (%edx:%eax /10, %edx:%eax%10) 9 r e t 2.6 Flagg De fleste operasjonene har en bieffekt: visse egenskaper ved resultatet blir lagret i flaggene. Z Zero. Settes til 1 når svaret er 0 (og til 0 ellers). S Sign. Settes lik øverste bit i svaret. C Carry. Settes lik den menteoverføringen som skjedde øverst i resultatet. O Overflow. Settes om svaret var for stort. P Parity. Settes om laveste byte har et partall 1-bit. 2.7 Maskeoperasjoner Maskeoperasjonene brukes til å sette eller nulle ut bit i henhold til et gitt mønster (maske). Maske-AND (andb) Lik operasjonen & i C. Det er forskjell på & (maske- AND eller bit-and) og && (logisk AND) i C. 1 & 4 == 0 og 1 && 4 == 1. 5
6 Maske-OR (orb) Denne operasjonen setter de bit som er markert i masken. Denne operasjonen er tilgjengelig i C som. Maske-NOT (notb) Denne snur alle bit-ene. Finnes i C som. Maske-XOR (xorb) Denne operasjonen snur bare de bit som er markert i masken. Denne operasjonen kalles ofte logisk addisjon. Den er tilgengelig i C og heter ^. 2.8 Hopp Instruksjonen for å hoppe hetet jmp. 1 jmp d i t 2 d i t : Betinget hopp Man kan angi at flaggene skal avgjøre om man skal hoppe. 1 j z d i t # Hopp om Z( ero ) 2 jnz d i t # Hopp om ikke Z 3 j c d i t # Hopp om C( arry ) 4 jnc d i t # Hopp om ikke C 5 j s d i t # Hopp om S ( ign ) 6 j n s d i t # Hopp om ikke S 7 j o d i t # Hopp om O( v e r f l o w ) 8 jno d i t # Hopp om ikke O 9 jp d i t # Hopp om P( a r i t y ) 10 jnp d i t # Hopp om i kke P Testing Flaggene kan settes som følge av vanlige instruksjoner: 1. g l o b l abs1 2 abs1 : movl 4(%esp ), %eax 3 addl $0, %eax 4 j n s r e t 2 5 n egl %eax 6 r e t 2 : r e t 6
7 Alternativt kan vi eksplisitt sjekke to verdier mot hverandre med instruksjonen cmp-: 1. g l o b l abs2 2 abs2 : movl 4(%esp ), %eax 3 cmpl $0, %eax 4 j n s r e t 1 5 n egl %eax 6 r e t 1 : r e t En tredje mulighet er test-. 1. g l o b l s3 2 s3 : t e s l $0x , 4(%esp ) 3 j z a3 pos 4 movl $1,% eax 5 jmp a3 x 6 a3 pos : movl $0, %eax 7 a3 x : r e t 2.9 Alignment Brukeren kan angi at variabler skal være alignet, dvs ikke krysse ordgrenser:.align n. Denne spesifikasjonen får assembleren til å legge inn 0 eller flere byte med ett eller annet inntil adressen har n 0-bit sist Bit-operasjoner Det finnes fire operasjoner for å jobbe med enkelt-bit: btl Gjør ingenting. btcl Snur bit-et. btrl Nuller bit-et. btsl Setter bit-et. Alle kopierer dessuten det opprinnelige bit-et til C-flagget. btl $2, %eax # Sjekker bit 2 i EAX. 7
8 2.11 Funksjonskall De seks første parameterne ligger i %RDI, %RSI, %RDX, %RCX, %R8, %R9. Øvrige parametere ligger på stakken. Parameterregisterne samt %R10 og %R11 er frie registere, de øvrige er bundne. Returverdien skal ligge i %RAX. 3 Stakken Stakken er veldig sentral i x86-arkitekturen til rutinekall, parameteroverføring, lagring av mellomresultater og plass til lokale variabler. Av historiske grunner vokser stakken mot lavere adresser. Legge elementer på stakken på stakken. Fjerne elementer fra stakken Instruksjonene pushw og pushl legger verdier Til dette brukes popw og popl. 4 Flyt-tall Tall med desimalkomma kan skriver på flere måter: , 0 8, , De to siste (±M G E ) er såkalte flyt-tall og består av: Mantisse (M). Grunntall (G). Eksponent (E). Fortegn. En normalisert mantisse er en binærbrøk med følgende egen- Normalisert skap: 1 M < 2 8
9 4.1 Standarden IEEE 754 for 32-bits flyt-tall S Eksponent Mantisse S er fortegnet; 0 for positiv og 1 for negativ. Grunntallet er 2. Eksponenten er på 8 bit og lagres med fast tillegg 127. Mantissen er helst normalisert og på 24 bit, men kun de 23 etter binærkommaet lagres. Mantissen er på 24 bit, og , Eksempel 1, 0 10 = 1, 0 2 som er normalisert. Eksponenten er = 127 = Fortegnet er Som spesialkonvensjon er 0 representert av kun 0-bit Eksempel 2 Hvordan lagres 12, 8125? 12, = 1100, = 1, Eksponenten er = 130 = Fortegnet er Det største tallet er omtrent , Eksponenten 0 er reservert for unormaliserte tall og tallet 0, eksponenten 255 for og NAN Regne med flyt-tall x86 har en egen flyt-tallsprosessor: x87. Den har egne registere ST(0) ST(7) som brukes som en stakk; de inneholder double-verider. ST(0) (ofte bare kalt ST) er toppen. 9
10 Konstanter fldz Dytter 0.0 på stakken. fld1 Dytter 1.0 på stakken. Lese fra minnet/stakken flds var Dytter float var på stakken. Skrive til minnet/stakken fsts var Skriver ST(0) til var som float. fstl var Skriver ST(0) til var som double. fst %st(4) Kopierer ST(0) til ST(x). fldl var Dytter double var på stakken. fld %st(1) Dytter kopi av ST(x) på stakken Aritmetiske operasjoner fstps var Som instruksjonene over, popper stakken etterpå. fstpl var fstp %st(5) 1 fadds var # ST( 0 ) += f l o a t var 2 f a d d l var # ST( 0 ) += double var 3 fadd %s t ( 4 ) # ST( 0 ) += ST( x ) 4 faddp # ST( 1 ) = ST( 0 )+ST( 1 ) ; popp 5 f i a d d s i v a r # ST( 0 ) += s h o r t i v a r 6 f i a d d l i v a r # ST( 0 ) += long i v a r Tilsvarende operasjoner finnes for subtraksjon, multiplikasjon og divisjon: 1 f s u b s var # ST( 0 ) = f l o a t var 2 fmuls var # ST( 0 ) = f l o a t var 3 f d i v s var # ST( 0 ) /= f l o a t var 4.3 Sammenligninger 1 f t s t # Sammenlign ST( 0 ) med fcoms i v a r # Sammenlign ST( 0 ) med s h o r t var 3 fcoml i v a r # Sammenlign ST( 0 ) med long var 4 fcom %s t ( 7 ) # Sammenlign ST( 0 ) med ST( x ) 5 fcom # Sammenlign ST( 0 ) med ST( 1 ) 10
11 Likedan som over, men popper etterpå: legg på en p etter fcom. fcompp popper to ganger. 11
Dagens tema Programmering av x86 Flytting av data Endring av størrelse
Dagens tema Programmering av x86 Flytting av data Endring av størrelse Aritmeriske operasjoner Flagg Maskeoperasjoner Hopp Tester Stakken Rutinekall Kall og retur Frie og opptatte registre Dokumentasjon
Dagens tema. Minnestrukturen Grovt sett ser minnet for hver process slik ut: Flytting av data. Programmering av x86
Dagens tema Programmering av x86 Minnestrukturen Flytting av data Endring av størrelse Aritmeriske operasjoner Flagg Maskeoperasjoner Hopp Tester Stakken Minnestrukturen Grovt sett ser minnet for hver
Dagens tema. Representasjon av mantissen En desimalbrøk: 1 1, INF1070 INF1070 INF1070 INF1070
Dagens tema Flyt tall Oppbygning IEEE 754 Programmering med flyt tall Selvmodifiserende kode Core War Flyt tall Tall med desimalkomma kan skrives på mange måter: 8 388 708,0 8,388708 0 6 8,39 0 6 De to
Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Hovedkortet Grovt sett inneholder et hovedkort En prosessor Minne (for både program og data) Klokke Kontrollere for periferutstyr.
Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Data.data Stakk %EAX %ECX %EDX %EBP %ESP Prosessor Kode Minne.text Hovedkortet Grovt sett inneholder et hovedkort En prosessor
Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Data.data Stakk %EAX %ECX %EDX %EBP %ESP Prosessor Kode Minne.text Hovedkortet Grovt sett inneholder et hovedkort En prosessor
Dagens tema. Flyt-tall. Koding. 64-bits kode. Hvordan lagres de? Hvordan regner man med dem? Koding av instruksjoner Kodefiler Linking
Dagens tema Flyt-tall Hvordan lagres de? Hvordan regner man med dem? Koding Koding av instruksjoner Kodefiler Linking 64-bits kode Hva er flyt-tall? Flyt-tall [REB&DRO H 2.4] Tall med desimalkomma kan
Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering
Oppsummering Pensum Grovt sett er alt fra forelesningene og øvingsoppgavene pensum. Detaljert oversikt finnes på kurssidene. Hovedtanker fra kurset Litt om eksamen Hvorfor har dere lært dette? Ikke mange
Dagens tema. Flyt-tall. Koding. Tegnsett. Hvordan lagres de? Hvilke egenskaper har de? Hvordan regner man med dem?
Dagens tema Flyt-tall Koding Hvordan lagres de? Hvilke egenskaper har de? Hvordan regner man med dem? Koding av instruksjoner 64-bits kode Tegnsett Ulike typer tegnkoding Programmering i C Hva er flyt-tall?
En oppsummering (og litt som står igjen)
En oppsummering (og litt som står igjen) Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen En oppsummering Oppsummering Pensum læreboken til og med kapittel 7 forelesningene de
Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen
Den siste dagen Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen En oppsummering Oppsummering Pensum Læreboken til og med kapittel 7, kompendiet, forelesningene
Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variable Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner.) Prosjektoversikt Del-0
Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt
Dagens tema Mer MIPS maskinkode (P&H: 4.4 + 3.6 + 3.3 + A.6 + A.10) Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt Ark 1 av 16 Forelesning
Løsningsforslag til eksamen i INF2270
Løsningsforslag til eksamen i INF227 Oppgave 9 Omid Mirmotahari Oppgave 6 Dag Langmyhr. juni 24 Eksamen INF227 Sensorveiledning Oppgave 2 Kretsforenkling Hva er funksjonsuttrykket for Output gitt av A
Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema
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? Charles Babbage Midt på 1800-tallet
Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?
Dagens tema Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin? Intel-prosessoren Enkel assemblerprogrammering Dag
En oppsummering. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen. Programmeringsoppgaver Flervalgsoppgaver
En oppsummering Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen Programmeringsoppgaver Flervalgsoppgaver Pensum Pensum Læreboken Forelesningene De obligatoriske oppgavene Ukeoppgavene
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 13. juni 2013 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 9 sider. Vedlegg: Tillatte hjelpemidler: INF2270 Datamaskinarkitektur
Oversikt Kodegenerering Variabler Setninger Uttrykk While-setningen
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variabler Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner.) Prosjektoversikt Del 0
Dagens tema. Er maskinen big endian? Denne funksjonen tester det: INF1070 INF1070 INF1070 INF1070
Dagens tema Bit fikling Makroer Blanding av C og assemblerkode Mer om Core War Dag Langmyhr,Ifi,UiO: Forelesning 22. mai 2006 Ark 1 av 25 Bit fikling Når alt er bit, gir det oss som programmerere nye muligheter.
Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variable Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner og array-er.) Prosjektoversikt
Dagens tema: Maskinkode. Litt datamaskinhistorie Hva er maskin- og assemblerkode? x86-prosessoren Programkode og variabler
Dagens tema Dagens tema: Maskinkode Litt datamaskinhistorie Hva er maskin- og assemblerkode? x86-prosessoren Programkode og variabler Charles Babbage Datamaskinenes historie Menneskene har alltid prøvd
Dagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.
Dagens tema Mer programmering i assemblerspråk Masking Hopp, tester og flagg Varianter over ld og st Vektorer og tekster Rutiner Stakker Programmering i assembler Dere kjenner sikkert den gamle gåten:
Dark load-store-maskin
Dark load-store-maskin Figur 1: Load-store arkitektur i Dark Dette dokumentet beskriver arkitekturen til load-store-maskina som benyttes i Dark. Figur 1 viser hvordan den ser ut. Det finnes 32 registre
Tema for siste forelesning:
Dagens tema Tema for siste forelesning: Kodegenerering Funksjoner Testing Ulike testprogrammer Kompilering av programsystemer make ant Hva må gjøres for funksjoner? Funksjoner For funksjoner må vi kunne
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: Eksamensdag: 12. juni 2015 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 11 sider. Vedlegg: Tillatte hjelpemidler: INF2270
Del 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
Introduksjon til DARK assembly
Introduksjon til DARK assembly Magnus Jahre Institutt for datateknikk og informasjonsvitenskap 2 Plan Assembly vs. Java Dark stakkmaskin Oversikt over stakkmaskinen Dark stakkmaskin eksempel Dark Load-Store
Løsningsforslag til eksamen i INF2270
Løsningsforslag til eksamen i INF2270 Omid Mirmotahari (oppgave 1 4) Dag Langmyhr (oppgave 5 6) 14. juni 2012 Eksamen inf2270 V12 - fasit 1) (5%) Forkort følgende uttrykk med karnaugh diagram zw xy 00
Programmeringsspråket C
Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger
Forelesning 15.11. Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B
TDT4160 Datamaskiner Grunnkurs Forelesning 15.11 Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B Dagens tema Datatyper (5.2) Heltall Ikke-numeriske datatyper Instruksjonsformat (5.3) Antall
Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix
Dagens tema Nyttige programmer Programmet make Flyt-tall Representasjon av flyt-tall Standarden IEEE 754 Systemkall i Unix Ark 1 av 24 Programmet make Det er mange praktiske problemer forbundet med programmering
2 Parser. 1 Skanner. 4 Kodegenerator. 3 Sjekker. Oversikt Datamaskinhistorie x86 Kodegenerering Setninger Uttrykk.
Dagens tema Dagens tema: Maskinkode del 1 Litt datamaskinhistorie Hva er maskin- og assemblerkode? x86-prosessoren Programkode for setninger Konstanter og uttrykk Prosjektoversikt f.pas f.s 1 Skanner :Token
Løsningsforslag til eksamen i INF2270
Løsningsforslag til eksamen i INF2270 Philipp Häfliger (oppgave 1, 2 og 3) Dag Langmyhr (oppgave 4 og 5) 10. juni 2010 1 1 Boolsk Algebra Det fins 5 forskjellige funksjoner blant disse Boolske uttrykene.
Forelesning Instruksjonstyper Kap 5.5
TDT4160 Datamaskiner Grunnkurs Forelesning 22.11 Instruksjonstyper Kap 5.5 Dagens tema Instruksjonstyper (5.5) Datatransport Datamanipulering Betingede hoppinstruksjoner Prosedyrekall Løkker I/O Eksempler
Kapittel 1 En oversikt over C-språket
Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske
IN 147 Program og maskinvare. Vanlige feil ved bruk av pekere Feilsøking Debuggere
Dagens tema Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger Egne testutskrifter Flyt-tall (P&H: 4.8) Representasjon av flyt-tall Standarden IEEE 754 MIPS-operasjoner på flyt-tall
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 14. juni 2007 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 9 sider. Vedlegg: INF1070 og INF2270 Datamaskinarkitektur
Dark Stakkmaskin. Aritmetiske instruksjoner
Dark Stakkmaskin Figur 1: Stakk arkitektur i Dark Dette dokumentet beskriver arkitekturen til stakkmaskina som benyttes i Dark. Figur 1 viser hvordan maskinen ser ut. Det finnes et register i prosessoren,
Dagens tema. Raskere kode [REB&DRO H kap 5]
Dagens tema Dagens tema Raskere kode [REB&DRO H kap 5] Når er det viktig? Hvordan måle eksekveringshastighet? Hvordan oppnår man raskere kode? Blanding av C og assemblerkode Dagens tema CPU-ene går ikke
Innhold. 2 Kompilatorer. 3 Datamaskiner og tallsystemer. 4 Oppsummering. 1 Skjerm (monitor) 2 Hovedkort (motherboard) 3 Prosessor (CPU)
2 Innhold 1 Datamaskiner Prosessoren Primærminnet (RAM) Sekundærminne, cache og lagerhierarki Datamaskiner Matlab Parallell Jørn Amundsen Institutt for Datateknikk og Informasjonsvitenskap 2010-08-31 2
Tema for siste forelesning:
Tema for siste forelesning: Kompilering av programsystemer make ant Kodegenerering Funksjoner Testing Ulike testprogrammer Hvordan kompilere riktig? Programmet make Det er mange praktiske problemer forbundet
ITPE/DATS 2400: Datamaskinarkitektur og Nettverk
ITPE/DATS 2400: Datamaskinarkitektur og Nettverk Forelesning 9: Instruksjonsettarkitektur 3 Knut H. Nygaard / T. M. Jonassen Institute of Computer Science Faculty of Technology, Art and Design Oslo and
2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
Oversikt over IN147(A):
Oversikt over IN147(A): Programmerings- og operativsystem-delen Oppsummering for IN147(A) Bit-mønstre Tallsystemer MIPS assemblerspråk C Datatyper Tillegg for de som tar hele IN147 Operativsystemer Parallellisering
Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere
Dagens tema Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere Formål: Nyttige å bruke under programmeringen Trening i programmering i C
Tall. Binære regnestykker. Binære tall positive, negative heltall, flytende tall
Tall To måter å representere tall Som binær tekst Eksempel: '' i ISO 889-x og Unicode UTF-8 er U+ U+, altså Brukes eksempelvis ved innlesing og utskrift, i XML-dokumenter og i programmeringsspråket COBOL
public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
2 Om statiske variable/konstanter og statiske metoder.
Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når
Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004
Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004 13. september 2004 En viktig del av den første obligatoriske oppgaven er å få erfaring med hvordan Java håndterer tall. Til å begynne med kan dette
Dagens tema. 2. Feilsøking. 1. Minnet. Fast minne. gdb ddd Valgrind Egne testutskrifter. Noen nyttige instruksjoner. Bit-fikling
Dagens tema 1. Minnet Fast minne Store og små indianere «align»-ing Noen nyttige instruksjoner Vektorer Hva er adressen? 2. Feilsøking gdb ddd Valgrind Egne testutskrifter Bit-fikling Faste variable Faste
Tall. Posisjons-tallsystemer. Representasjon av heltall. Tall positive, negative heltall, flytende tall. Tekst ASCII, UNICODE XML, CSS
Tall jfr. Cyganski & Orr 3..3, 3..5 se også http://courses.cs.vt.edu/~csonline/numbersystems/lessons/index.html Tekst ASCII, UNICODE XML, CSS Konverteringsrutiner Tall positive, negative heltall, flytende
INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen
INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og
OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?
OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.
Øvingsforelesning 1 Python (TDT4110)
Øvingsforelesning 1 Python (TDT4110) Introduksjon, Kalkulasjoner Ole-Magnus Pedersen Oversikt Praktisk Info Repetisjon fra sist Oppgaver for øving 2 2 Praktisk Info Last opp øvinger på Blackboard før godkjenning
Reelle tall på datamaskin
Reelle tall på datamaskin Knut Mørken 5. september 2007 1 Innledning Tirsdag 4/9 var tema for forelesningen hvordan reelle tall representeres på datamaskin og noen konsekvenser av dette, særlig med tanke
Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering
Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at
Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon
Oversikt INF1000 Uke 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning Uttrykk
