4. Maskinnära programmering i C. Förberedelser till hemlaboration 1.
|
|
- Ulla-Britt Falk
- för 7 år sedan
- Visningar:
Transkript
1 IS1200 ösningar till exempel, övning 4, Maskinnära programmering i C. Förberedelser till hemlaboration Big-endian och little-endian När heltal, flyttal och adresser ska lagras i datorns minne så behövs flera bytes för varje värde. Då finns två alternativ för byte-ordningen. En möjlighet är att börja med den byte som innehåller värdets mest signifikanta bitar, och placera denna byte närmast adress 0. Övriga bytes som ingår i värdet kommer i ordning, med mindre signifikanta bitar ju längre från adress 0 man kommer. Denna byte-ordning kallas big-endian. Den andra möjligheten är att börja med den byte som innehåller värdets minst signifikanta bitar, och den ordningen kallas little-endian. Instruktionerna ldw och stw kopierar data mellan ett byte-adresserat minne och ett processorregister som har plats för 4 bytes. Här är en figur som illustrerar skillnaden mellan big-endian och little-endian för instruktionerna ldw och stw. ittle-endian medför alltså att den "första" byten, den byte som ligger närmast adress 0 i minnet, finns längst till höger i registret, i den "lilla" änden. Big-endian medför att den byte som ligger närmast adress 0 i minnet placeras längst till vänster i registret, i den "stora" änden. I vår labutrustning används little-endian byte-ordning. ösningar till övning 4, sida 1 (av 10)
2 4.2. Alignment Det är vanligt att hårdvaran kräver att datatyper som är större än bara en enstaka byte lagras på en (start-) adress som är delbar med en lämplig 2-potens. Detta underlättar för hårdvarukonstruktören, eftersom minnet vanligtvis är uppbyggt med platser som är bredare än enstaka bytes. Ofta är minnets verkliga ordlängd 4 byte eller 8 byte. När minnet är bredare än 1 byte finns extra hårdvara för att utföra instruktionen ldb, oad Byte. Hårdvaran måste läsa ett helt minnesord, och sedan välja ut rätt byte. Påminnelse om effektivadress: anta att en processor utför oad-instruktionen ldw r8,4(r9) Innehållet i register r9 och konstanten 4 adderas. Resultatet av additionen blir den minnesadress som oad-instruktionen läser i minnet. Denna minnesadress kallas för effektivadress. Om instruktionen ldw (oad Word) används med en effektivadress som inte är jämnt delbar med 4, så ligger de 4 bytes som instruktionen ska läsa utspridda på två olika minnesord med intilliggande adresser. För att göra instruktionen ldw i detta fall skulle ännu mera extra hårdvara behövas. Den hårdvaran skulle behöva läsa båda minnesorden, välja ut rätt bytes, och sätta ihop dem till ett ord. Här är ett exempel på hur hårdvaran skulle behöva hämta två ord och sätta ihop dem för att utföra en ldw-instruktion när effektivadressen = 43. adress adress Nios II har inte denna extra hårdvara för att läsa två ord och sätta ihop. Därför måste effektivadressen till instruktionen ldw alltid vara jämnt delbar med 4. På samma sätt måste effektivadressen till instruktionen ldh (oad Halfword, läser 2 byte) alltid vara jämnt delbar med 2. Vissa processorer, bland annat i Sparc-serien, har instruktioner som läser/skriver 8 byte i taget, det vill säga 64 bitar. En oad-instruktion för 8 byte kan heta ldd (oad Double). 8-bytes oad och Store används för 64-bits adresser, 64-bits heltal (long long int) och 64-bits flyttal (double). I Sparc-fallet kräver processorn att effektivadressen är jämnt delbar med 8 om en oad- eller Store-instruktion ska läsa/skriva 8 byte. Detta passar förstås för minnessystem där varje plats i minnet är 8 byte stor. Mer om Nios II: hårdvaran kollar inte om adressen är jämnt delbar med 4, utan utför instruktionen och läser/skriver på fel plats i minnet. Simulatorn kollar adresserna och avbryter programmet om exempelvis ldw används med en effektivadress som inte är jämnt delbar med 4. ösningar till övning 4, sida 2 (av 10)
3 4.3. Adressrymd (address space) och vad som finns i rymden a) Se föreläsning 5 och lab-pm för hemlab om Maskinnära programmering med C. b) Exempel på tänkbar minnesallokering: Antag att ditt program har tillgång till en adressrymd med adresser från 0 upp till (om programräknaren är 32 bitar stor) vilket är 4 Gigabyte. (Operativsystemets virtuellminnessystem erbjuder varje program en känsla av att ha tillgång till ett så stort minne. Mer om virtuellt minne får Du lära dig i kurser av typen Datorteknik fortsättningskurs och Operativsystem) På adress 0 och uppåt placeras binärkoden för den översatta programkoden. Programmmets binärkod kommer att ta olika stor plats beroende på programmets storlek. På närmast högre adresser placeras de variabler som ska vara statiska dvs finnas plats för i minnet under hela exekveringen. Dessa variabler delas upp i initialized och uninitialized data. I den exekverbara filen, a.out, eller *.exe, måste finnas information om varje variabels storlek och eventuellt innehåll. För de initialiserade variablerna ska ju även finnas information om deras värde, vilket alltså tar mer plats i a.out/*.exe-filen. För de oinitierade variablerna behöver plats reserveras men det räcker med information (i a.out/*.exe-filen) om hur mycket plats (hur många bytes) som ska reserveras för dessa variabler. Programkod och initerade variabler kan buntas ihop till en enda stor binärkodsklump. Det är tänkbart/rimligt att variabler som deklareras som const (i själva verket konstanter) placeras tillsammans med programkoden och görs Read-Only. Till exempel textsträngar i formateringssatser typ printf etc. c) Programkod, initialiserade variabler samt reserverad plats för oinitierade variabler placeras alltså från adress 0 i minnet och uppåt så stor plats som behövs. Dessa statiska minnesutrymmen reserveras at compile-time. Resten av den tillgängliga minnesarean används för dynamisk minnesallokering, at execution-time, dvs för heap och stack. Heapen kan placeras direkt efter data/bss-arean och växer mot högre adresser. Stacken kan placeras i minnets högsta adresser och växa mot lägre adresser. Det är tänkbart och rimligt att förvänta sig att ett operativsystem tillsammans med hårdvara i MMU, Memory Management Unit, kan upptäcka när stack och/eller heap växer in i varandras minnesutrymme. Det är tänkbart och rimligt att förvänta sig att ett operativsystem tillsammans med hårdvara i MMU, Memory Management Unit, kan upptäcka om programräknaren pekar utanför programarea och upptäcka om programmet vid exekvering gör minnesreferenser (med OAD/STORE) till variabler inne i programarean. Kanske löses detta genom att man i den virtuella adressrymden skiljer mellan pages som hör till olika minnesområden. ösningar till övning 4, sida 3 (av 10)
4 4.4. Värden, pekare, referenser, heltalsvariabler Skriv programrader i C som visar hur * och & används för att a) deklarera två heltalsvariabler: a och b. int a, b; # placera i.bss eller # på adress delbar med 4 a:.word 0 # ett ord = 4 bytes = 32 bitar med värdet 0 b:.word 0 # ett ord = 4 bytes = 32 bitar med värdet 0 b) initialisera heltalsvariabeln b till värdet 27 i samband med deklarationen. int a; int b=27; a:.word 0 b:.word 27 # ett ord = 4 bytes = 32 bitar med värdet 27 (dec) c) deklarera två pekarvariabler som kan peka på a och b: ptr1 och ptr2. int* ptr1; int* ptr2; /* int* ptr1, ptr2; är fel fel fel */ /* int *ptr1, *ptr2; är också OK */ ptr1:.word 0 # ett ord = 4 bytes = 32 bitar med värdet 0 ptr2:.word 0 # ett ord = 4 bytes = 32 bitar med värdet 0 d) tilldela a värdet 4711 och b värdet 47. a=4711; b= 47;.text # placera i.text arean # på adress delbar med 4 moviar8, a # r8 pekar nu på a moviar9, 4711 # r9 innehåller värdet 4711 stw r9, 0(r8) # värdet 4711 skrivs till a moviar8, b # r8 pekar nu på b moviar9, 47 # r9 innehåller nu värdet 47 stw r9, 0(r8) # värdet 47 skrivs till b e) tilldela pekarvariabeln ptr1 ett värde så att den pekar på heltalsvariabeln a. ptr1 = &a; /* utläses som ptr1 tilldelas värdet av adressen till a */.text # placera i.text arean # på adress delbar med 4 moviar8, a # adressen till a skrivs till r8 moviar9, ptr1 # r9 pekar nu på ptr1 stw r8, 0(r9) # adressen till a skrivs nu till ptr1 ösningar till övning 4, sida 4 (av 10)
5 f) tilldela heltalsvariabeln b samma värde som a, med hjälp av ptr1. b=*ptr1; /* b tilldelas det värde som ptr1 peka på */.text # placera i.text arean # på adress delbar med 4 moviar8, ptr1 # nu pekar r8 på ptr1 moviar9, b # nu pekar r9 på b ldw r10, 0(r8) # nu innehåller r10 värdet av ptr1 som pekar på a ldw r11, 0(r10) # nu innehåller r11 värdet som ptr1 pekar på dvs a stw r11, 0(r9) # nu innehåller b det som ptr1 pekade på dvs a g) tilldela pekarvariabeln ptr2 ett värde så att den pekar på samma variabel som ptr1. ptr2 = ptr1; /* variabeln ptr2 tilldelas samma värde som variabeln ptr1 */.text # placera i.text arean # på adress delbar med 4 moviar8, ptr1 # nu pekar r8 på ptr1 moviar9, ptr2 # nu pekar r9 på ptr2 ldw r10, 0(r8) # nu finns värdet från ptr1 i r10 stw r10, 0(r9) # nu har ptr2 samma värde som ptr Värden, pekare, referenser, char-variabler Skriv programrader i C som visar hur * och & används i nedanstående exempel. Översätt varje exempel för hand till Nios2-assembler. Skriv alltså först C och sedan Nios-II-assembler för att: a) deklarera två globala variabler av typen char: c och d. char c, d; # placera i.bss eller # på adress delbar med 4, kanske onödigt... c:.byte 0 # 1 byte = 8 bitar med värdet 0 d:.byte 0 # 1 byte = 8 bitar med värdet 0 Blir det någon skillnad i Nios-II-assemblerkoden jämfört med motsvarande operation med heltalsvariabler? Svar JA, bara en byte per variabel och tätt packat b) initialisera variabeln d till värdet 65 i samband med deklarationen. Vad blir det för skillnad i Nios-II-assemblerkoden jämfört med motsvarande operation med heltalsvariabler? char c; char d=65; # placera i.bss eller # på adress delbar med 4 c:.byte 0 # 1 byte = 8 bitar med värdet 0 d:.byte 65 # 1 byte = 8 bitar med värdet 65 (dec) ösningar till övning 4, sida 5 (av 10)
6 c) deklarera två globala pekarvariabler som kan peka på c och d: ptr3 och ptr4. char *ptr3, *ptr4; # placera i.bss eller # på adress delbar med 4, nödvändigt, pekare är 4 bytes ptr3:.word 0 # ett ord = 4 bytes = 32 bitar med värdet 0 ptr4:.word 0 # ett ord = 4 bytes = 32 bitar med värdet 0 Blir det någon skillnad i Nios-II-assemblerkoden jämfört med motsvarande operation med heltalsvariabler? Ingen kvalitets-skillnad mot heltal (förutom symboliska namn) d) tilldela c värdet 'M'. och tilldela d värdet 97. c = 'M'; d = 97;.txt moviar8, c # r8 pekar nu på c movi r9, 'M' # nu räcker det med movi (istf movia) stb r9, 0(r8) # ska vara stb istf stw moviar8, d # r8 pekar nu på d movi r9, 97 # misstänkt negativt?! stb r9, 0(r8) # ska vara stb istf stw Vad blir det för skillnad i Nios-II-assemblerkoden jämfört med motsvarande operation med heltalsvariabler? Se den kraftiga texten ovan. e) tilldela pekarvariabeln ptr3 ett värde så att den pekar på variabeln c. ptr3 = &c;.txt moviar8, c # nu pekar r8 på c moviar9, ptr3 # nu pekar r9 på ptr3 stw r8, 0(r9) # nu pekar ptr3 på c Blir det någon skillnad i Nios-II-assemblerkoden jämfört med motsvarande operation med heltalsvariabler? Ingen kvalitets-skillnad mot heltal (förutom symboliska namn) f) tilldela variabeln d samma värde som c, med hjälp av ptr3. d=*ptr3; /* d tilldelas det värde som ptr3 pekar på */.txt moviar8, ptr3 # nu pekar r8 på ptr3 moviar9, d # nu pekar r9 på d ldw r10, 0(r8) # nu innehåller r10 värdet av ptr3 som pekar på c ldb r11, 0(r10) # nu innehåller r11 värdet som ptr3 pekar på dvs c stb r11, 0(r9) # nu innehåller d det som ptr3 pekade på dvs c Vad blir det för skillnad i Nios-II-assemblerkoden jämfört med motsvarande operation med heltalsvariabler? Se den kraftiga texten ovan. ösningar till övning 4, sida 6 (av 10)
7 g) tilldela pekarvariabeln ptr4 ett värde så att den pekar på samma variabel som ptr3. ptr4 = ptr3; /* variabeln ptr2 tilldelas samma värde som variabeln ptr1 */.txt moviar8, ptr3 # nu pekar r8 på ptr3 moviar9, ptr4 # nu pekar r9 på ptr4 ldw r10, 0(r8) # nu finns värdet från ptr3 i r10 stw r10, 0(r9) # nu har ptr4 samma värde som ptr3 Blir det någon skillnad i Nios-II-assemblerkoden jämfört med motsvarande operation med heltalsvariabler? Ingen kvalitets-skillnad mot heltal (förutom symboliska namn) 4.6. Funktionen memcpy Bland biblioteksrutinerna finns en som heter memcpy, med följande deklaration. void * memcpy( void * dest, const void * src, size_t len ); Ett anrop kan se ut såhär. int a[4711][4711]; int b[4711][4711]; /* här emellan finns mera kod, som bland annat initialiserar matrisen a */ (void) memcpy( &b[0][0], &a[0][0], sizeof( a ) ); a) Förklara vad en pointer to void är för något. Det är en pekare som pekar på en plats i minnet men det är odefinierat vilken typ som pekas ut. Det innebär att kompilatorn inte vet hur många bytes som eventuellt ska läsas eller skrivas på den platsen i minnet. Därför krävs av programmeraren att det görs type-cast av en void-pekare innan den kan användas för en minnesreferens. Exempel: int * ptr1 = (int *) malloc (sizeof(int)); b) Förklara de tre parametrarna till memcpy. Den första, dest, är en voidpekare som anger första byte i minnet till vilken kopiering ska ske. Den andra, src, är en voidpekare som anger första byte från vilken kopiering ska ske. Den tredje parametern anger antal bytes som ska kopieras. c) Förklara returvärdet från memcpy. Returvärdet är en voidpekare (som ska returnera det ursprungliga värdet av dst) d) Förklara operatorn sizeof(). Opeatorn sizeof() kommer (at compile-time) ta reda på storleken av a uttryckt i antal bytes. e) Förklara texten (void) vid anropet till memcpy. På returvärdet, vilke typ det än är, görs type-cast till en void för att därefter ignoreras. ösningar till övning 4, sida 7 (av 10)
8 f) Visa hur funktionen memcpy kan översättas till assembler för Nios II. memcpy: mov r2, r4, # returnera dst-pekaren beq r6, r0, out # kolla om klart baa: ldb r12, 0(r5) # läs 1 byte addi r5, r5, 1 # öka src-pekare stb r12, 0(r4) # skriv 1 byte addi r4, r4, 1 # öka dst-pekare subi r6, r6, 1 # minska counter bgt r6, r0,baa # loopa om fler bytes kvar out: ret 4.7. Matriser Se föreläsning 5 och lab-pm för hemlab om Maskinnära programmering med C. C-kompilatorn lagrar matriser radvis. Det innebär att matriselementen alltid läggs i ordning [0][0] sedan [0][1] sedan [0][2] sedan [0][3] sedan [0][4] sedan [1][0] sedan [1][1]sedan [1][2] och så vidare C-version av puttime /* Declare hexasc so the compiler can do type-checking. */ int hexasc( int ); void puttime( int *tid ) { int tmp = *tid; /* Send carriage-return and line-feed to console. */ putchar( '\r' ); putchar( '\n' ); /* Send time to console. */ putchar( hexasc( tmp >> 12 ) ); putchar( hexasc( tmp >> 8 ) ); putchar( ':' ); putchar( hexasc( tmp >> 4 ) ); putchar( hexasc( tmp ) ); } ösningar till övning 4, sida 8 (av 10)
9 4.9. Struct a) struct tiger { char namn[13]; int vikt; float fart; float lengd; }; b) struct eararea { float left; float right; }; c) struct elephant { char namn[13]; int vikt; struct eararea oronyta; }; d) Vilket resultat erhålls som returvärde från operationerna sizeof (struct elephant); troligen 13(+3) = 28 sizeof (struct tiger); troligen 13(+3) = 28 sizeof (int); troligen 4 Kommentarer: detta förutsätter att en int och en float lagras i 4 byte, samt att int och float och hela structen lagras på adresser jämnt delbara med 4. Det senare är nödvändigt för att hårdvaran i Nios II och många andra datorer ska kunna läsa en int eller float med en ldw-instruktion (och skriva med en stw-instruktion). e) En vektor, cirkus, med plats för 4 elefanter kan man deklarera med struct elephant cirkus[4]; ösningar till övning 4, sida 9 (av 10)
10 4.10. Dynamisk minnesallokering med malloc och free Beskriv med ord eller rita en figur som illustrerar hur minne kan allokeras, avallokeras och återanvändas vid följande tänkvärda operationer i ett c-program / * 1 * / / * 2 * / / * 3 * / / * 4 * / / * 5 * / / * 6 * / /* 1 */ struct elephant * dumbo=(struct elephant *) malloc (sizeof (struct elephant)); /* 2 */ struct tiger * tiger1 = (struct tiger *) malloc (sizeof (struct tiger)); /* 3 */ free (dumbo); /* 4 */ struct tiger * tiger2 = (struct tiger *) malloc (sizeof (struct tiger)); /* 5 */ struct tiger * tiger3 = (struct tiger *) malloc (sizeof (struct tiger)); /* 6 */ free (tiger1); Figuren nedan avses illustrera rad för rad vad som sker (För att lagra en elephant reserveras 28 bytes liksom för en tiger.) /* 1 */ för dumbo allokeras 28 bytes i botten på heap /* 2 */ för tiger1 allokeras ytterligare 28 bytes på näraliggande högre adresser och troligen blir det glapp mellan dumbo och tiger1 /* 3 */ av-allokerar 28 bytes (dumbo) i botten på heap /* 4 */ för tiger2 allokera de nyss av-allokerade 28 bytes i botten på heap, reuse /* 5 */ för tiger3 allokeras 28 bytes på adresser ovanför tiger1 och troligen blir det glapp mellan tiger1 och tiger3 /* 6 */ av-allokerar tiger1 och nu blir det en lucka mellan tiger2 och tiger3 - h e a p d u m d u m b o b o t i g e r 2 t i g e r 1 t i g e r 1 t i g e r 1 t i g e r 2 t i g e r 1 t i g e r 2 + T i g e r 3 T i g e r 3 ösningar till övning 4, sida 10 (av 10)
IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1
IS1200 Datorteknik Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 1 4.1 Little och big endian 2 Nios II? Nios II är Little-endian (men eftersom det är en soft-processor
Läs merCE_O3. Nios II. Inför lab nios2time
IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",
Läs mer*Pekarvärden *Pekarvariabler & *
*Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)
Läs merCE_O1. Nios II. Enkla assembler-instruktioner.
IS1500 ösningsförslag till övning CE_O1 2014 CE_O1. Nios II. Enkla assembler-instruktioner. 1.1. Datorarkitektur för Nios II a) Tabell 3 1 i Nios II Processor Reference Handbook visar processorns register:
Läs merTDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne
Läs merF5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Läs merAtt använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
Läs merF5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
Läs merCE_O5. Cacheminne. Hemlaboration 2.
IS1500 Exempelsamling till övning CE_O5, 2014 CE_O5. Cacheminne. Hemlaboration 2. 5.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne
Läs merProgrammering av inbyggda system. Kodningskonventioner. Viktor Kämpe
Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK
Läs merDynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar
Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden
Läs merAssemblerprogrammering, ARM-Cortex M4 del 3
Assemblerprogrammering, ARM-Cortex M4 del 3 Ur innehållet: Fler pekartyper Användning av stacken Lagringsklasser, synlighet - lokala variabler Funktioner - returvärden och parametrar Läsanvisningar: Arbetsbok
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Läs merLösningar till tentamen i EIT070 Datorteknik
Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad
Läs merI Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Läs merAssemblerprogrammering för ARM del 3
Assemblerprogrammering för ARM del 3 Ur innehållet Fält och sammansatta typer (poster) Pekarvariabler och pekarkonstanter Pekararitmetik, operationer på fält Läsanvisningar: Arbetsbok kap 2 Quick-guide,
Läs merInnehåll. Pekare Exempel
Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.
Läs merInnehåll. Pekare Exempel
Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2017 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.
Läs merFöreläsning 10. Pekare (Pointers)
Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return
Läs merÖversikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström
DST 1 Nicholas Wickström IDE, Högskolan i Halmstad 2009 1 Outline 1 Vad är Hårdvara? (Datorsystemmodell; processor m. periferi, IO, Minne) Typiskt för hårdvarunära programmering (datablad, register, datastrukturer,...)
Läs merÖvning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Läs merParameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Läs merPer Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647
Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel
Läs merMinnestilldelning (allokering) och frigörande (avallokering) av minne
Pekare i C++ Pekare används mycket i C++. De är bra både för att de tillåter dynamisk minnesallokering och för att de är referenser. En pekarvariabel innehåller en adress till ett element, den pekar på
Läs merInnehåll. Pekare Syntax
Innehåll EDAF30 Programmering i C++ Typer, pekare Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Typer och arrayer Operatorn -> Typer, pekare 2/1 Påminner om referenser i Java, men en pekare är minnesadressen
Läs mer2 Pekare och dynamiska variabler.
2 Pekare och dynamiska variabler. När man definierar en variabel reserverar man samtidigt minne för variabelns värde. Detta minnesutrymme kommer man sedan åt med hjälp av variabelns namn. Definierar man
Läs merCE_O2. Nios II. Subrutiner med mera.
IS1500 Lösningsförslag till övning CE_O2 2014 CE_O2. Nios II. Subrutiner med mera. 2.1. Binära lagringsformat R-type: (Register-format) ra (5 bit) rb (5 bit) rc (5 bit) operationskod (17 bit) Detta format
Läs merFortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe
Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering
Läs merEnkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
Läs merPoster ( structar ) Postdeklarationer
Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.
Läs merProgrammering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Läs merVariabler, värden och typer
Variabler, värden och typer Viktigt att förstå på djupet: För programmering i många språk, t.ex. Java För kommande objektorientering! TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Fråga kommentera
Läs merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs merProgrammering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Läs merDataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte
CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.
Läs merFöreläsning 5: Introduktion av pekare
Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merStack och subrutiner Programmeringskonventionen
Stack och subrutiner Programmeringskonventionen Du ska förstå hur en instruktion behandlas i processorn Du ska känna till några fler instruktioner Du ska veta hur maskinkoden för ett program byggs upp
Läs merMål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?
Mål Datorteknik Föreläsning 3 Att veta hur maskinkoden för ett program byggs upp Att börja programmera i på riktigt Att kunna skriva och anropa subrutiner i Att förstå hur stacken fungerar Att veta vad
Läs merDigital- och datorteknik
Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Tallriksmodellen Stackoperationer Element kan endast
Läs merVariabler, värden och typer
Variabler, värden och typer Viktigt att förstå på djupet: För programmering i många språk, t.ex. Java För kommande objektorientering! jonas.kvarnstrom@liu.se 2017 Fråga kommentera avbryt! Intro till variabler
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merLågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre
Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler
Läs merGrundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Läs merAgenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då
Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de
Läs merFunktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare
Funktionspekare, inledning: funktionsanropsmekanismen Vid funktionsanrop läggs aktuella argumentvärden och återhoppsadressen på stacken, därefter sker ett hopp till adressen för funktionens första instruktion.
Läs merDet finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Läs merGrundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Läs merTDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 21 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 21 Internminne
Läs merInstitutionen för elektro- och informationsteknologi, LTH
Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva
Läs merDatorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH
Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva
Läs merFöreläsning 6 pekare och pekare tillsammans med arrayer
Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går
Läs merTDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om
Läs merProgrammering av inbyggda system. Pekare och Arrayer. Viktor Kämpe
Pekare och Arrayer Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berättar hur man tolkar bitarna som finns på adressen. unsigned char* pek 0x3026 0x3026 0110 0001 typ värdet är en adress...
Läs merDatorsystem Laboration 2: Minnesmappade bussar
Datorsystem Laboration 2: Minnesmappade bussar Senast uppdaterad: 14 oktober 2012 Version 1.2 Student: Lärare: Underskrift: Underskrift: Datum: Datorsystem Laboration 2 1 Innehåll 1 Inledning 2 1.1 Introduktion..................................
Läs merc a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11
A basic -bit Select between various operations: OR, AND, XOR, and addition Full Adder Multiplexer Digitalteknik och Datorarkitektur hp Föreläsning : introduktion till MIPS-assembler - april 8 karlmarklund@ituuse
Läs merDatorsystem. Tentamen
Datorsystem Tentamen 2012-03-17 Instruktioner Samtliga svar skall vara motiverade och läsbara. Eventuella tabeller, illustrationer och beräkningar som används för att nå svaret ska också finnas med i lösningen.
Läs merInstitutionen för datavetenskap 2014/15
LUNDS TEKNISKA HÖGSKOLA Datorer och datoranvändning Institutionen för datavetenskap 2014/15 ME en dator 1 Inledning ME är en påhittad dator, men den har likheter med riktiga datorer: det finns ett maskinspråk
Läs merLösningar till tentamen i EIT070 Datorteknik
Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 7 mars 2012, klockan 14:00 19:00 i Vic 2, 3. Tillåtna hjälpmedel: på tentan utdelad formelsamling,
Läs merProgrammering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
Läs merAssemblerprogrammering - fördjupning
Assemblerprogrammering - fördjupning Ur innehållet: Trampoliner tabellerade funktionsadresser Aktiveringspost med ARM Cortex M4 Mer om parameteröverföring Registerspill Kodgenerering - ISA "Kodoptimering"
Läs merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merInnehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering
Innehåll EDAF30 Programmering i C++ 6. Resurshantering Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Resurshantering Stack-allokering Heap-allokering: new och delete 2 Smarta pekare 3 Klasser, resurshantering
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser
Läs merMaskinorienterad programmering
Maskinorienterad programmering Sammanfattning Ur innehållet: Vi rekapitulerar kursens syften Vi repeterar kursens lärandemål Vi belyser hur den skriftliga delen av examinationen genomförs. Sammanfattning
Läs merMiniprojekt: MEX och molekyldynamik
4 september 2013 Miniprojekt 1 (5) Beräkningsvetenskap DV Institutionen för informationsteknologi Beräkningsvetenskap Besöksadress: Polacksbacken, hus 2 Lägerhyddsvägen 2 Postadress: Box 337 751 05 Uppsala
Läs merProgrammering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe
Pekare och Arrayer Ulf Assarsson Originalslides av Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berä>ar hur man tolkar bitarna som finns på adressen. char str[] = "apa"; char* p = &str[0];
Läs merVärmedistribution i plåt
Sid 1 (6) Värmedistribution i plåt Introduktion Om vi med konstant temperatur värmer kanterna på en jämntjock plåt så kommer värmen att sprida sig och temperaturen i plåten så småningom stabilisera sig.
Läs merProgrammering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33
Programmering i C++ EDA623 Typer EDA623 (Föreläsning 4) HT 2013 1 / 33 Typer Innehåll Heltalstyper Flyttalstyper Pekare Minnesallokering Funktionspekare Typdeklarationer med typedef Typomvandlingar (casting)
Läs merUlf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volafle, #define Arrayer av pekare, arrayer av arrayer Hemuppgi9er: v2. Föregående
Läs merI denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.
Laboration:. Jämförelser mellan assembler och C. 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. Förberedelser:
Läs merTentamen. Datorteknik Y, TSEA28
Tentamen Datorteknik Y, TSEA28 Datum 2015-06-01 Lokal Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen
Läs merÖvningar Dag 2 En första klass
Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt
Läs merLEU240 Mikrodatorsystem
Institutionen för data- och informationsteknik 2011-10-11 LEU240 Mikrodatorsystem Vi har tidigare i olika sammanhang sett att det är önskvärt att kunna använda ett högnivåspråk som C för att skriva program
Läs merInledande programmering med C# (1DV402) 27+15=42 1 (22)
27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll
Läs merÖvning 6. Parallellport, timer
Övning 6 Parallellport, timer 6.1 de2_pio_toggles18 Memory-Mapped addresses LEDG8 LEDR17 LEDR16 LEDR15 LEDR14 LEDR13 LEDR12 LEDR11 LEDR10 LEDR9 LEDR8 LEDR7 LEDR6 LEDR5 LEDR4 LEDR3 LEDR2 LEDR1 LEDR0 LEDG7
Läs merLabora&on 2 Funk&oner, if och loop övningar/uppgi:er
Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns
Läs merFöreläsning 2. Operativsystem och programmering
Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data
Läs merTDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap
TDP004 Minne och pekare Eric Elfving Institutionen för datavetenskap 1 / 23 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 23 Internminne - RAM Datorns internminne (RAM,
Läs merKompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Läs merPekare och arrayer. Indexering och avreferering
Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs merLösningar till tentamen i EIT070 Datorteknik
Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Torsdagen den 13 mars 2014, klockan 14:00 19:00 i MA:10. Tillåtna hjälpmedel: på tentan utdelad formelsamling,
Läs merElektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik
Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod
Läs merArv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Läs merOm pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp().
Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp(). Detta extra material är tänkt att dels fördjupa och förtydliga pekarbegreppet från C och ge
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merDatorsystem. Tentamen 2011-10-29
Datorsystem Tentamen 2011-10-29 Instruktioner Samtliga svar skall vara motiverade och läsbara. Eventuella tabeller och beräkningar som används för att nå svaret ska också finnas med i lösningen. Ett svar
Läs merDigital- och datorteknik
Digital- och datorteknik Föreläsning #18 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Assemblerprogrammering Assemblatorer vs kompilatorer
Läs merOperativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00
Operativsystem ID2200 Tentamen TEN1 3.8 hp 2018-04-03 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa
Läs merRepetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Läs merDigital- och datorteknik
Digital- och datorteknik Föreläsning #8 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Assemblatorer vs kompilatorer En assemblator är ett program
Läs merEn kort text om programmering i C.
En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock
Läs mer