Skip to content

Commit bb97568

Browse files
committed
Finished machine code slides
1 parent daf53b6 commit bb97568

File tree

2 files changed

+100
-61
lines changed

2 files changed

+100
-61
lines changed

lectures/machine-code/machine-code.tex

+98-59
Original file line numberDiff line numberDiff line change
@@ -157,34 +157,34 @@ \section{Maskinkod}
157157

158158
\halfblankline
159159
\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)}
163163
\end{itemize}
164164

165165
\blankline
166166
\ti{Användning av binära tal}
167167

168168
\halfblankline
169169
\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}
173173
\end{itemize}
174174

175175
\end{frame}
176176

177177
\begin{frame}[fragile,t]
178178
\frametitle{Hexadecimala Tal}
179179

180-
\ti{Hexadecimala Talsystemet}
180+
\ti{Hexadecimala talsystemet}
181181

182182
\begin{itemize}
183183
\ii{Hexadecimal (bas 16) - använder siffror 0-9 och bokstäverna A-F.}
184184
\end{itemize}
185185

186186
\blankline
187-
\ti{Varför Hexadecimala Tal?}
187+
\ti{Varför Hexadecimala tal?}
188188

189189
\begin{itemize}
190190
\ii{Förenkling!}
@@ -230,122 +230,161 @@ \section{Maskinkod}
230230

231231

232232
\begin{frame}[fragile,t]
233-
\frametitle{minne i datorer}
233+
\frametitle{Minne i datorer}
234234

235235
\ti{Typer av minne}
236236
\begin{itemize}
237237
\ii{RAM -- arbetsminne som lagrar data och instruktioner temporärt}
238238
\ii{ROM -- lagrar permanent data, t.ex. firmware}
239239
\ii{Cache -- snabbare minne nära CPU:n för att optimera åtkomst}
240+
\ii{Hårddisk, SSD, etc. -- permanent lagring av data}
240241
\end{itemize}
241242

242243
\blankline
243-
\ti{Samspel med CPU:n}
244+
\ti{Var används vilket minne?}
244245
\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)}}
247250
\end{itemize}
248251
\end{frame}
249252

250253

251254
\begin{frame}[fragile,t]
252-
\frametitle{Grundläggande om maskinkod}
255+
\frametitle{Maskinkod -- definition och egenskaper}
253256

254-
\ti{Definition och egenskaper}
257+
\ti{Vad är maskinkod?}
255258
\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)}
260262
\end{itemize}
261263

262264
\blankline
263-
\ti{Hur förhåller sig olika ``nivåer'' av språk?}
265+
\ti{Exempel på maskininstruktioner}
264266
\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}}
268268
\end{itemize}
269269
\end{frame}
270270

271-
272271
\begin{frame}[fragile,t]
273272
\frametitle{Maskininstruktioner}
274273

275-
\ti{komponenter}
274+
\ti{Komponenter av en instruktion}
276275
\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)}
279278
\end{itemize}
280279

281280
\blankline
282-
\ti{exekvering av instruktioner}
281+
\ti{Exekvering av instruktioner (fetch-decode-execute)}
283282
\begin{itemize}
284283
\ii{CPU:n hämtar instruktionen från minnet}
285284
\ii{Avkodar opcode och identifierar operand(er)}
286285
\ii{Utför operationen och sparar resultatet}
287286
\end{itemize}
288-
289-
\blankline
290-
\ti{exempel}
291-
\begin{itemize}
292-
\ii{Exempel skiljer sig mellan olika CPU-arkitekturer}
293-
\end{itemize}
294287
\end{frame}
295288

296-
297289
\begin{frame}[fragile,t]
298290
\frametitle{Assembly-språk}
299291

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}
300298

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}
303304
\end{frame}
304305

305306
\begin{frame}[fragile,t]
306-
\frametitle{Skriva enkel maskinkod}
307+
\frametitle{Exempel på en assembly-instruktion}
307308

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}
308314

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}
311321
\end{frame}
312322

323+
313324
\begin{frame}[fragile,t]
314-
\frametitle{Maskinkod och moderna datorer}
325+
\frametitle{Instruktionsuppsättningsarkitektur (ISA)}
315326

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}
316333

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}
319341
\end{frame}
320342

321343
\begin{frame}[fragile,t]
322-
\frametitle{Kompilatorer och tolkar}
344+
\frametitle{Maskinkod vs. Högnivåspråk}
323345

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}
324354

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}
327361
\end{frame}
328362

329-
\begin{frame}[fragile,t]
330-
\frametitle{Utmaningar med att arbeta med maskinkod}
331363

364+
\begin{frame}[fragile]
365+
\frametitle{Laboration -- \texttt{c3pu}}
332366

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?}
339368

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}
340378

341-
% Recap of the key points covered
342-
% Encouragement to explore more about how programming languages work at the machine level
343379
\end{frame}
344380

345-
\begin{frame}[fragile,t]
346-
\frametitle{Frågor och diskussion}
381+
\begin{frame}[fragile]
382+
\frametitle{\texttt{c3pu} -- Demo}
347383

384+
\begin{center}
385+
\Huge DEMO
348386

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}
351390
\end{frame}

lectures/machine-code/slides.tex

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
\ifdefined\ishandout
22
\documentclass[handout]{beamer}
3-
\else
3+
\else
4+
% \documentclass[handout]{beamer}
45
\documentclass{beamer}
5-
% \setbeamercovered{transparent}
66
\fi
77

88
\includeonly{machine-code}

0 commit comments

Comments
 (0)