x86 Assembler Flashcards

Vorlesungsfolien

1
Q

x86 Prozessoren

Was sind die Hauptmerkmale des Intel 8086/8087 Prozessors?

A

Der 8086 ist eine 16-Bit CPU und der 8087 berechnet Fließkommazahlen. Beide wurden 1979 eingeführt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

x86 Prozessoren

Was ist der Unterschied zwischen dem 8086 und dem 8088 Prozessor?

A

Der 8088 hat einen billigeren 8-Bit Datenbus im Vergleich zum 16-Bit Datenbus des 8086.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

x86 Prozessoren

Welche Neuerungen brachte der 80286 Prozessor?

A

Der 80286 führte den “Protected Mode” ein, während die vorherigen Modelle im “Real Mode” liefen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

x86 Prozessoren

Was war die Besonderheit des 80386 Prozessors?

A

Der 80386 war der erste x86 Mikroprozessor mit einem 32-Bit Bus, wodurch der gesamte Speicher linear adressiert werden konnte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

x86 Prozessoren

Welche Funktion hatte der 80486 DX im Gegensatz zum 80486 SX?

A

Der 80486 DX hatte eine integrierte Fließkommaeinheit, die dem 80486 SX fehlte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

x86 Prozessoren

Welche neuen Instruktionen wurden mit dem Pentium III eingeführt?

A

Der Pentium III führte die SSE Instruktionen ein.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

x86 Prozessoren

Was ist Hyper-Threading und welcher Prozessor führte es ein?

A

Hyper-Threading wurde im Pentium 4 eingeführt und gibt vor, aus 2 CPUs zu bestehen, obwohl es nur ein Chip ist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

MMX und SSE Instruktionen

Was bedeutet SSE und welche Erweiterungen gibt es?

A

SSE steht für Streaming SIMD Extensions, und es gibt Erweiterungen wie SSE2, SSE3, etc., die 128-Bit Register für Gleitkommazahlen einführen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

MMX und SSE Instruktionen

Was ist die Grundidee hinter MMX Instruktionen?

A

Die Grundidee ist, mehrere Integer-Rechenoperationen mit einem Befehl auszuführen, indem 8 neue 64-Bit Register eingeführt wurden​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

MMX und SSE Instruktionen

Was bedeutet MMX und wofür steht es ursprünglich?

A

MMX steht für Multi Media Extension und stand ursprünglich für Matrix Math Extension​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers EAX?

A

Accumulator register für arithmetische Operationen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers ECX?

A

Counter register für Shift/Rotate Instruktionen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers EDX?

A

Data register für arithmetische Operationen und I/O.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers EBX?

A

Base register für Speicheradressen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers ESP?

A

Stack Pointer register für die Adresse des Stacks (unteres Ende).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers EBP?

A

Stack Base Pointer register für die Adresse des Stacks (oberes Ende).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers ESI?

A

Source Index register.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

x86 Registersätze - General Purpose Register

Was ist die Funktion des Registers EDI?

A

Destination Index register​

19
Q

x86 Registersätze - Flags im Flags Register

Was bedeutet die Flag CF?

A

Carry Flag, gesetzt, wenn die letzte Addition ein überhängendes Bit produzierte oder die Subtraktion ein Bit borgen musste.

20
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag PF?

A

Parity Flag, gesetzt, wenn die Anzahl der 1er im niederwertigsten Byte gerade ist.

21
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag AF?

A

Adjust Flag für BCD Berechnung.

22
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag ZF?

A

Zero Flag, gesetzt, wenn die letzte Rechenoperation Null ergab.

23
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag SF?

A

Sign Flag, gesetzt, wenn die letzte Rechenoperation eine negative Zahl ergab.

24
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag TF?

A

Trap Flag, versetzt die CPU in den Debug Modus.

25
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag IF?

A

Interruption Flag, schaltet Interrupts an und aus.

26
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag DF?

A

Direction Flag, gibt die Richtung bei Stringoperationen an.

27
Q

x86 Registersätze - General Purpose Register

Was bedeutet die Flag OF?

A

Overflow Flag, gesetzt, wenn das Ergebnis der letzten Rechenoperation nicht mehr in den Speicher passte

28
Q

Adressierungsarten

Was ist die Register Adressierung und ein Beispiel dafür?

A

Bei der Register Adressierung stehen alle Operanden in den Registern und das Ergebnis landet ebenfalls in einem Register. Beispiel: mov ax, bx kopiert bx nach ax.

29
Q

Adressierungsarten

Was ist die direkte Speicheradressierung und ein Beispiel dafür?

A
  • Bei der direkten Speicheradressierung wird ein Operand aus dem Hauptspeicher gelesen, dessen Adresse im Maschinensprachebefehl kodiert ist.
  • Beispiel: mov ax, [102h]
    liest den Speicher aus und schreibt das Ergebnis in das Register
30
Q

Was ist die Register-indirekte Adressierung und ein Beispiel dafür?

A
  • Bei der Register-indirekten Adressierung enthält ein Register eine Adresse, aus der der Operand gelesen wird.
  • Beispiel: mov ax, [bx] liest die 16-Bit-Adresse aus bx und speichert sie in ax.
31
Q

Stack

Was sind die drei Hauptspeicherblöcke eines Prozesses?

A

Text (statische Daten), Data (dynamische Daten) und Stack (nützlich für Funktionsaufrufe)

32
Q

Stack

Wie funktioniert eine push Operation auf dem Stack?

A

Eine push Operation speichert den Operanden auf dem Stack, indem das SP Register verringert und an die neue Adresse geschrieben wird

33
Q

Stack

Was ist ein Stack Frame und welche Register sind daran beteiligt?

A

Ein Stack Frame wird bei jedem Funktionsaufruf erzeugt und enthält lokale Variablen und Funktionsparameter. Der Stack Pointer (SP) zeigt auf das oberste Byte des Stacks, und der Base Pointer (BP) zeigt auf den Beginn eines Stack Frames.

34
Q

Aufrufkonventionen

Was ist die \_\_cdecl Aufrufkonvention?

A

Bei der \_\_cdecl Aufrufkonvention werden die Parameter von rechts nach links auf den Stack gelegt, der Aufrufer muss die Parameter wegräumen, und es sind variable Parameterlisten möglich

35
Q

Aufrufkonventionen

Was ist der Hauptunterschied zwischen \_\_stdcall und \_\_cdecl Aufrufkonventionen?

A

Bei \_\_stdcall räumt die Funktion ihre Parameter weg, wohingegen bei \_\_cdecl der Aufrufer die Parameter wegräumen muss

36
Q

Rekursion

Was ist Rekursion und welche Gefahr besteht dabei?

A

Rekursion ist eine Technik, bei der eine Funktion sich selbst aufruft. Eine Gefahr besteht darin, dass es zu einem Stack Overflow kommen kann, wenn keine Abbruchbedingung vorhanden ist.

36
Q

Aufrufkonventionen

Was ist die \_\_fastcall Aufrufkonvention?

A

Bei \_\_fastcall werden die ersten zwei Parameter in den Registern EAX und EDX übergeben, weitere Parameter werden auf den Stack gelegt. Diese Methode ist schneller, da Registerzugriffe schneller sind als Stackzugriffe

37
Q

Rekursion

Was ist der Unterschied zwischen normaler Rekursion und Tail-Recursion?

A
  • Bei normaler Rekursion wird die rekursive Funktion aufgerufen und danach noch Code ausgeführt, während bei Tail-Recursion der rekursive Aufruf der letzte Befehl ist.
  • Tail-Recursion kann in eine iterative Lösung umgewandelt werden, die keine Stacknutzung benötigt
38
Q

Schleifen

Wie sieht eine for-Schleife in Assembler aus?

A
push bp
mov bp, sp
sub sp, 2
mov [bp-2], 0
loc_10026:
cmp [bp-2], 5
jge short loc_10047
mov ax, 22h
push ax
call sub_10089
add sp, 2
inc [bp-2]
jmp short loc_10026
loc_10047:
mov sp, bp
pop pb
retn
39
Q

Wie sieht eine while-Schleife in Assembler aus?

A
push bp
mov bp, sp
sub sp, 2
mov [bp-2], 0
loc_10027:
cmp [bp-2], 5
jge short loc_10042
inc [bp-2]
mov ax, 22h
push ax
call sub_10085
add sp, 2
jmp short loc_10027
loc_10042:
mov sp, bp
pop bp
retn
40
Q

Sprünge und bedingte Sprünge

Was passiert bei einem nicht-bedingten Sprung in einer Pipeline?

A
  • Bei einem nicht-bedingten Sprung kann die CPU den falschen Befehl im Speicher haben, da sie den vermeintlich nächsten Befehl holen muss, bevor der Sprung erkannt wird.
  • Eine Lösung besteht darin, immer den Befehl nach dem Sprung auszuführen oder das Problem mit extra Transistoren zu umgehen.
41
Q

Sprünge und bedingte Sprünge

Was ist das Problem bei bedingten Sprüngen in einer Pipeline?

A
  • Das Ergebnis eines bedingten Sprungs liegt erst vor, wenn die entsprechende Pipeline-Stufe fertig ist, was zu Unsicherheit und Verzögerungen führen kann.
  • Lösungen umfassen das Warten oder spekulative Ausführung.
42
Q

Sprünge und bedingte Sprünge

Wie funktioniert die spekulative Ausführung bei bedingten Sprüngen?

A

Bei der spekulativen Ausführung rät die CPU, ob ein Sprung durchgeführt wird oder nicht. Wenn sie richtig rät, wird der Sprung normal ausgeführt, andernfalls muss die Pipeline geleert und der Sprung rückgängig gemacht werden.

43
Q

Sprünge und bedingte Sprünge

Was sind statisches und dynamisches Raten bei bedingten Sprüngen?

A
  • Statisches Raten basiert auf festen Regeln, z.B. dass bedingte Rücksprünge wahrscheinlich sind, während dynamisches Raten auf dem Verlauf der letzten Befehlsausführungen basiert.
  • Dynamisches Raten kann mit 1-Bit oder 2-Bit Speichern in der CPU umgesetzt werden.