Hvad er Assembly?
Det er et lavniveau-programmeringssprog, der direkte korresponderer med maskinens instruktioner
Hvorfor bruger man Assembly når man vil konvertere C++ kode i REM?
Det gør man for at analysere koden og for at gøre det mere læseligt for os.
Hvilke instruktioner er der i Assembly?
Hvad gør “Data movement” instruktionen?
Den flytter på dataen fra en lokation til en anden.
Eksempel –> mov
Hvilke kommandoer er der i “Data move” instruktioner?
Hvad gør “Arithmetic” instruktionen?
Det udfører matematiske udregner mellem to operands.
Hvilke kommandoer er der i “Arithmetic” instruktioner?
Hvad gør “Logical” instruktionen?
Den sammenligner to binære værdier for at få et binært tal tilbage ud fra en logical operation.
Hvilke kommandoer er der i “Logical” instruktioner?
Hvad gør “Control flow” instruktionen?
Den bestemmer om vi springer frem eller tilbage i programmet ud fra betingelser.
Hvilke kommandoer er der i “Control flow” instruktioner?
Hvad gør “Stack” instruktionen?
Det er en hurtig måde at tilføje og hente data til og fra stacken.
Hvilke kommandoer er der i stack instruktioner?
Hvad gør “push” instruktionen?
Det tilføjer en variabel til stacken og får den til at vokse for at gøre plads til mere.
Hvad gør “pop” instruktionen?
Det fjerner en variabel fra stacken og formindsker den.
Hvad er en lokal variable?
Det er en variabel der er defineret inden for en funktion eller scope.
Den er kun tilgængelig inden for sin egen funktion/scope og eksisterer midlertidigt under eksekvering.
Hvad er et argument?
Det er en værdi eller et objekt overført til en funktion ved kald.
Bruges som input til funktionen.
Hvad kan man bruge for finde ud af om de variabler der er gemt i “stack’en” er lokale variabler eller argumenter?
Man kan bruge ebp.
Hvordan ser man forskel på en lokal variable og et argument i Assembly kode?
Hvad er formålet med at kopiere esp til ebp i begyndelsen af et funktionskald i Assembly?
Formålet er at, ebp vil pege på, hvor esp var, før vi lavede plads til de lokale variabler.
Nævn de 3 forskellige “Function calling conventions”.
Hvad gør “Cdecl” som er den mest hyppig brugte funktionskald?
Hvad gør “Stdcall”?
Hvad gør “Fastcall”?
Generelt ligner den “stdcall”, men ecx og edx bruges til at gemme de første 2 argumenter, mens resten er gemt i stakken.