@@ -157,34 +157,34 @@ \section{Maskinkod}
157
157
158
158
\halfblankline
159
159
\begin {itemize }
160
- \ii {\textbf {Bit: } Grundläggande enhet av data i datorer (0 eller 1). }
161
- \ii {\textbf {Byte: } Grupp av 8 bitar. }
162
- \ii {\textbf {Ord: } Processor-specifik grupp av bitar (t.ex., 32-bit eller 64-bit). }
160
+ \ii {\textbf {Bit: } Grundläggande enhet av data i datorer (0 eller 1)}
161
+ \ii {\textbf {Byte: } Grupp av 8 bitar}
162
+ \ii {\textbf {Ord: } Processor-specifik grupp av bitar (t.ex., 32-bit eller 64-bit)}
163
163
\end {itemize }
164
164
165
165
\blankline
166
166
\ti {Användning av binära tal}
167
167
168
168
\halfblankline
169
169
\begin {itemize }
170
- \ii {Lagring och bearbetning av all data och instruktioner. }
171
- \ii {Varje byte kan representera ett tecken i text, t.ex., ASCII-kod. }
172
- \ii {Större grupper (ord) hanterar mer komplexa data som heltal och flyttal. }
170
+ \ii {Lagring och bearbetning av all data och instruktioner}
171
+ \ii {Varje byte kan t.ex. representera ett litet heltal (0--255) eller ett tecken ( ASCII-kod) }
172
+ \ii {Större grupper (ord) hanterar mer komplexa data som heltal och flyttal}
173
173
\end {itemize }
174
174
175
175
\end {frame }
176
176
177
177
\begin {frame }[fragile,t]
178
178
\frametitle {Hexadecimala Tal}
179
179
180
- \ti {Hexadecimala Talsystemet }
180
+ \ti {Hexadecimala talsystemet }
181
181
182
182
\begin {itemize }
183
183
\ii {Hexadecimal (bas 16) - använder siffror 0-9 och bokstäverna A-F.}
184
184
\end {itemize }
185
185
186
186
\blankline
187
- \ti {Varför Hexadecimala Tal ?}
187
+ \ti {Varför Hexadecimala tal ?}
188
188
189
189
\begin {itemize }
190
190
\ii {Förenkling!}
@@ -230,122 +230,161 @@ \section{Maskinkod}
230
230
231
231
232
232
\begin {frame }[fragile,t]
233
- \frametitle {minne i datorer}
233
+ \frametitle {Minne i datorer}
234
234
235
235
\ti {Typer av minne}
236
236
\begin {itemize }
237
237
\ii {RAM -- arbetsminne som lagrar data och instruktioner temporärt}
238
238
\ii {ROM -- lagrar permanent data, t.ex. firmware}
239
239
\ii {Cache -- snabbare minne nära CPU:n för att optimera åtkomst}
240
+ \ii {Hårddisk, SSD, etc. -- permanent lagring av data}
240
241
\end {itemize }
241
242
242
243
\blankline
243
- \ti {Samspel med CPU:n }
244
+ \ti {Var används vilket minne? }
244
245
\begin {itemize }
245
- \ii {CPU:n läser och skriver data till och från RAM}
246
- \ii {Cache används för att minska åtkomsttiden till ofta använd data}
246
+ \ii {Moderkortet har litet ROM, för att starta datorn}
247
+ \ii {CPU:n kan komma åt RAM via moderkortet}
248
+ \ii {Cache används för att minska åtkomsttiden till ofta använd data\\
249
+ \emph {(Finns ofta flera nivåer av cache) }}
247
250
\end {itemize }
248
251
\end {frame }
249
252
250
253
251
254
\begin {frame }[fragile,t]
252
- \frametitle {Grundläggande om maskinkod }
255
+ \frametitle {Maskinkod -- definition och egenskaper }
253
256
254
- \ti {Definition och egenskaper }
257
+ \ti {Vad är maskinkod? }
255
258
\begin {itemize }
256
- \ii {Maskinkod -- binära instruktioner direkt förstådda av CPU:n}
257
- \ii {Består av enkla operationer som aritmetik, logik, och flytta data}
258
- \ii {Den specifika instruktionsuppsättningen varierar beroende på CPU}
259
- \ii {Vanliga instruktioner: \texttt {MOV }, \texttt {ADD }, \texttt {SUB }, \texttt {JMP }}
259
+ \ii {Binära instruktioner direkt förstådda av CPU:n}
260
+ \ii {Utför enkla operationer som aritmetik, logik, och flyttning av data}
261
+ \ii {CPU:n använder en specifik instruktionsuppsättning (ISA)}
260
262
\end {itemize }
261
263
262
264
\blankline
263
- \ti {Hur förhåller sig olika `` nivåer '' av språk? }
265
+ \ti {Exempel på maskininstruktioner }
264
266
\begin {itemize }
265
- \ii {Maskinkod -- lägst nivå, direkt förstådd av CPU:n}
266
- \ii {Assemblerspråk -- låg nivå, men använder textrepresentation av instruktioner}
267
- \ii {Högnivåspråk -- mer abstrakta, översätts till maskinkod via kompilatorer}
267
+ \ii {\texttt {MOV }, \texttt {ADD }, \texttt {SUB }, \texttt {JMP }}
268
268
\end {itemize }
269
269
\end {frame }
270
270
271
-
272
271
\begin {frame }[fragile,t]
273
272
\frametitle {Maskininstruktioner}
274
273
275
- \ti {komponenter }
274
+ \ti {Komponenter av en instruktion }
276
275
\begin {itemize }
277
- \ii {Opcode -- specificerar vilken operation som ska utföras }
278
- \ii {Operand(er) -- data eller adresser som operationen ska tillämpas på }
276
+ \ii {Opcode -- specificerar operationen (t.ex. \texttt { ADD }) }
277
+ \ii {Operand(er) -- data eller adresser för operationen (t.ex. register) }
279
278
\end {itemize }
280
279
281
280
\blankline
282
- \ti {exekvering av instruktioner}
281
+ \ti {Exekvering av instruktioner (fetch-decode-execute) }
283
282
\begin {itemize }
284
283
\ii {CPU:n hämtar instruktionen från minnet}
285
284
\ii {Avkodar opcode och identifierar operand(er)}
286
285
\ii {Utför operationen och sparar resultatet}
287
286
\end {itemize }
288
-
289
- \blankline
290
- \ti {exempel}
291
- \begin {itemize }
292
- \ii {Exempel skiljer sig mellan olika CPU-arkitekturer}
293
- \end {itemize }
294
287
\end {frame }
295
288
296
-
297
289
\begin {frame }[fragile,t]
298
290
\frametitle {Assembly-språk}
299
291
292
+ \ti {Vad är Assembly-språk?}
293
+ \begin {itemize }
294
+ \ii {Lågnivåspråk nära maskinkod, använder textrepresentation av instruktioner}
295
+ \ii {Varje assembly-instruktion motsvaras direkt av en maskininstruktion}
296
+ \ii {CPU-specifikt, beroende på arkitektur}
297
+ \end {itemize }
300
298
301
- % Introduction to assembly language as a low-level programming language
302
- % Relationship between assembly language and machine code
299
+ \blankline
300
+ \ti {Översättning till maskinkod}
301
+ \begin {itemize }
302
+ \ii {Assembler konverterar assembly till maskinkod som CPU:n kan exekvera}
303
+ \end {itemize }
303
304
\end {frame }
304
305
305
306
\begin {frame }[fragile,t]
306
- \frametitle {Skriva enkel maskinkod }
307
+ \frametitle {Exempel på en assembly-instruktion }
307
308
309
+ \ti {Instruktion: \texttt {ADD R1, R2, R2 }}
310
+ \begin {itemize }
311
+ \ii {Adderar värdet i \texttt {R1 } och \texttt {R2 }, lagrar resultatet i \texttt {R2 }}
312
+ \ii {R1 och R2 är register som används för temporär datalagring i CPU:n}
313
+ \end {itemize }
308
314
309
- % Example of a simple program in machine code
310
- % Explanation of what each part of the program does
315
+ \blankline
316
+ \ti {Relation till maskinkod}
317
+ \begin {itemize }
318
+ \ii {Opcode för \texttt {ADD } + binär representation av register (\texttt {R1 }, \texttt {R2 })}
319
+ \ii {Exempel: \texttt {ADD R1, R2, R2 } $ \rightarrow $ \texttt {1001 0001 0010 0010 }}
320
+ \end {itemize }
311
321
\end {frame }
312
322
323
+
313
324
\begin {frame }[fragile,t]
314
- \frametitle {Maskinkod och moderna datorer }
325
+ \frametitle {Instruktionsuppsättningsarkitektur (ISA) }
315
326
327
+ \ti {Vad är ISA?}
328
+ \begin {itemize }
329
+ \ii {ISA specificerar alla maskininstruktioner som en CPU kan förstå och utföra}
330
+ \ii {Olika CPU-arkitekturer har olika uppsättningar}
331
+ \ii {Påverkar hur assembly-språk och maskinkod ser ut för olika processorer}
332
+ \end {itemize }
316
333
317
- % Relevance of machine code in contemporary software development
318
- % Overview of how high-level languages are translated into machine code
334
+ \blankline
335
+ \ti {Exempel på ISA:er}
336
+ \begin {itemize }
337
+ \ii {x86 -- Används i de flesta persondatorer}
338
+ \ii {ARM -- Vanlig i mobila enheter}
339
+ \ii {RISC-V -- Öppen arkitektur, växande i popularitet}
340
+ \end {itemize }
319
341
\end {frame }
320
342
321
343
\begin {frame }[fragile,t]
322
- \frametitle {Kompilatorer och tolkar }
344
+ \frametitle {Maskinkod vs. Högnivåspråk }
323
345
346
+ \ti {Utmaningar med att skriva i maskinkod}
347
+ \begin {itemize }
348
+ \ii {Maskinkod är lågnivå och svår att läsa och skriva för människor}
349
+ \ii {Svårt att hantera tillstånd och strukturer, och att debugga}
350
+ \ii {Inga if/else och loopar -- ersätts med jämförelser och hopp}
351
+ \ii {Funktioner är manuellt hanterade med stack- och registeroperationer}
352
+ \ii {Ingen objektorientering (klasser, arv, etc.)}
353
+ \end {itemize }
324
354
325
- % Explanation of compilers and interpreters
326
- % How they translate high-level code into executable machine code
355
+ \blankline
356
+ \ti {Varför högnivåspråk?}
357
+ \begin {itemize }
358
+ \ii {Abstraktioner för vanliga strukturer, vilket gör kod enklare att skriva, läsa och underhålla}
359
+ \ii {Kompilatorer hanterar översättning av komplexa strukturer till maskinkod}
360
+ \end {itemize }
327
361
\end {frame }
328
362
329
- \begin {frame }[fragile,t]
330
- \frametitle {Utmaningar med att arbeta med maskinkod}
331
363
364
+ \begin {frame }[fragile]
365
+ \frametitle {Laboration -- \texttt {c3pu }}
332
366
333
- % Difficulties and limitations of coding in machine code
334
- % Importance of understanding machine code for debugging and optimization
335
- \end {frame }
336
-
337
- \begin {frame }[fragile,t]
338
- \frametitle {Sammanfattning}
367
+ \ti {\large Så, vad ska ni göra på laborationen?}
339
368
369
+ \halfblankline
370
+ \begin {itemize }
371
+ \ii {Översätta kod till assembly?}
372
+ \ii {Nej, värre än så \dots }
373
+ \ii {Skriva egen assembly-kod?}
374
+ \ii {Nej, ännu värre än så!}
375
+ \ii {\textbf {Skriva faktisk maskinkod! }\\
376
+ \texttt {01010111 01010100 01000110 00100001 00111111 }}
377
+ \end {itemize }
340
378
341
- % Recap of the key points covered
342
- % Encouragement to explore more about how programming languages work at the machine level
343
379
\end {frame }
344
380
345
- \begin {frame }[fragile,t ]
346
- \frametitle {Frågor och diskussion }
381
+ \begin {frame }[fragile]
382
+ \frametitle {\texttt { c3pu } -- Demo }
347
383
384
+ \begin {center }
385
+ \Huge DEMO
348
386
349
- % Open the floor for questions
350
- % Suggest further reading materials and resources
387
+ \halfblankline
388
+ \Large \texttt {c3pu } -- en enkel CPU-simulator
389
+ \end {center }
351
390
\end {frame }
0 commit comments