x86 Assembler Programmierung Flashcards
MMX Instruktionen
Was bedeutet MMX?
Multi Media Extension
MMX Instruktionen
Was ist die Grundidee von MMX?
Ermöglichen von mehreren Rechenoperationen mit einem Befehl
MMX Instruktionen
Neben der Einführung von 8 neuen 64-Bit Registern kann auch als Vektoraddition durchgeführt werden. Beispiel: paddb mm0, mm2. Erkläre was passiert und wie viele Operationen gleichzeitig durchgeführt werden.
Es werden 8 unabhängige Bytes addiert (jeweils 8 Bit) und 8 Operationen gleichzeitig ausgeführt
SSE Instruktionen
Was bedeutet SSE?
Streaming SIMD Extensions
SSE Instruktionen
Wie lauten die Erweiterungen?
SSE2, SSE3,…
SSE Instruktionen
Wie groß ist das Register?
Es handelt sich um ein 128-Bit Register
SSE Instruktionen
MMX arbeitet mit Integer. Womit arbeitet SIMD?
Mit Gleitkommazahlen
SSE Instruktionen
SISD ist die Single Instruction und Single Data. Welche Architektur wäre ein gutes Beispiel?
Die klassische Intel-Architektur
SSE Instruktionen
SIMD ist Single Instruction und Multiple Data. Wofür ist es nützlich?
Für Vektorberechnungen
SSE Instruktionen
MISD ist Multiple Instructions und Single Data. Gibt es die überhaupt?
Nein, die gibt es nicht
SSE Instruktionen
MIMD ist Multiple Instructions und Multiple Data. Was wäre ein gutes Beispiel dafür?
Parallelrechner, z.B. Multicore-Chips
AMD Prozessoren
Nenne alle AMD Prozessoren aus der Vorlesung
- Athlon
- Turion
- Duron
- Sempron
- Opteron
x86 Registersätze
Das General Purpose Register besteht aus 8 Registern zu je 32 Bit. Was ist die Aufgabe des General Purpose Register?
Speichern von Daten, Zähler und Speicheradressen
x86 Registersätze
Wie wird der Speicher unterteilt?
Der Speicher wird in Segmente unterteilt
x86 Registersätze
Was macht das Flags Register?
Es gibt den Zustand der CPU wieder z.B. N und Z Bit oder Carry Bit
x86 Registersätze
Was gibt der Instruction Pointer (IP/EIP) / Program Counter (PC) an?
Die Adresse des nächsten Maschinensprache-Befehls
x86 Registersätze
Woraus besteht das Spezialregister?
MMX/SSE
x86 Registersätze
Wofür steht das Register ECX und wofür ist es zuständig?
Es steht für das Counter Register und ist für Shift/Rotate Instruktionen zuständig
x86 Registersätze
Wofür steht das Register EDX und wofür ist es zuständig?
Es steht für das Data register und ist für arithmetische Operationen und I/O zuständig
x86 Registersätze
Wofür steht das Register ESI?
Es steht für das Source Index register
x86 Registersätze
Wofür steht das Register EBP und was beinhaltet es?
Es steht für den Stack Base Pointer register und beinhaltet die Adresse des Stacks am oberen Ende
x86 Registersätze
Wofür steht das Register ESP und was beinhaltet es?
Es steht für das Stack Pointer register und beinhaltet die Adresse des Stacks am unteren Ende
x86 Registersätze
Wofür steht das Register EAX und wofür ist es zuständig?
Es steht für Accumulator register und ist zuständig für arithmetische Operationen
x86 Registersätze
Wofür steht das Register EDI?
Es steht für das Destination Index register
x86 Registersätze
Wofür steht das Register EBX und was beinhaltet es?
Es steht für das Base register und beinhaltet die Speicheradresse
x86 Registersätze
Womit beginnen 32-Bit Register?
Sie beginnen mit E: EAX, EDX
x86 Registersätze
Welche Bits sind adressierbar?
Die niederwertigen 16 Bits wie AX, DX und BX
x86 Registersätze
Haben die niederwertigen 16 Bits eigene Register?
Nein, die haben keine eigenen Register
x86 Registersätze
Die 2 * 8 Bit von AX, BX, CX und DX sind adressierbar. Es gibt AH, BH, CH und DH und AL, BL, CL und DL. Welche sind die höherwertigen Bits und welche die niederwertigen Bits?
- AH, BH, CH, DH (die höherwertigen 8 Bit)
- AL, BL, CL, DL (die niederwertigen 8 Bit)
x86 Registersätze
Wofür stehen die Segmentregister SS, CS, DS, ES, FS und GS?
- SS: Stack Segment
- CS: Code Segment
- DS: Data Segment
- ES: Extra Segment
- F: F Segment
- GS: G Segment
Segmente bei Intel Pentium CPUs
Woraus besteht ein Pentium Segment-Selektor?
Aus dem Index, GDT/LDT und Privilege Level
Segment bei Intel Pentium CPUs
Wozu dient der Index?
Er dient dazu, den spezifischen Segment-Deskriptor innerhalb der Tabelle zu identifizieren
Segmente bei Intel Pentium CPUs
Wofür ist GDT/LDT zuständig?
Es bestimmt die Segment-Deskriptor-Tabelle
Segmente bei Intel Pentium CPUs
Welche Rechte hat das Privilige Level?
Es hat Zugriffsrechte auf Segment Ebene
x86 Registersätze
Warum wird Segmentierung heute nicht mehr genutzt?
Da Paging besser ist
x86 Registersätze
SS, CS, DS, ES zeigen für einen Prozess alle auf dieselbe Speicheradresse. Wie wird der Speicher dann adressiert?
Der Speicher wird komplett linear adressiert
x86 Registersätze
FS und GS zeigen für einen Prozess nicht auf dieselbe Speicheradresse. Was wird dort gespeichert?
TLD = Thread Local Data, d.h. Daten, die für jeden Thread anders sind
x86 Registersätze / Flagregister
Welche Flagregister gibt es?
- CF: ?
- PF: ?
- AF: ?
- ZF: ?
- SF: ?
- TF: ?
- IF: ?
- DF: ?
- OF: ?
- IOPL: ?
- AC: ?
- CF: Carry Flag
- PF: Parity Flag
- AF: Adjust Flag
- ZF: Zero Flag
- SF: Sign Flag
- TF: Trap Flag
- IF: Interruption Flag
- DF: Direction Flag
- OF: Overflow Flag
- IOPL: I/O Privilige Level field (2 bits)
- AC: Alignment Check
x86 Datenrepräsentation
Bei Little Endian wird das niederwertige Byte zuerst angegeben. Wie wird der Wert 0xA1B2C3D4 im Speicher abgelegt?
D4 C3 B2 A1
Zweierkomplement
Bei dem Zweierkomplement erhält man die negativen Zahlen, indem man alle Bits invertiert und eines addiert. Wie würde 1 = 0001 invertiert aussehen?
- Invertiert = 1110
- Ein Bit addieren
- -1 = 1111
Adressierungsarten
Wo stehen die Operanden und das Ergebnis bei der Register Adressierung?
Die Operanden stehen in den Registern und das Ergebnis ist auch in einem Register
Adressierungsarten
Wo wird der Wert und das Ergebnis bei den Konstanten gespeichert?
Der Wert ist im Maschinensprachbefehl gespeichert und das Ergebnis in einem Register
Adressierungsarten
Wo befindet sich der Operand bei der direkten Speicheradressierung?
Der Operand befindet sich im Hauptspeicher und wird auch aus dem gelesen
Beispiel auf Folie 22
Adressierungsarten
Wo wird die Adresse des Operanden bei der direkten Speicheradressierung hineinkodiert?
Die Adresse des Operanden ist im Maschinensprachebefehl hineinkodiert
Beispiel auf Folie 22
Adressierungsarten
Die direkte Speicheradressierung mit Offset ist eigentlich keine Addressierungsart.
Beispiel:
- byte_tbl db 4, 8, 15, 16, 23, 42
- mov al, byte_tbl+2
Was ist byte_tbl und die 2 in dem Beispiel?
byte_tbl ist eine konstante Adresse im Datensegment und 2 ist eine Konstante