ARM7 vgl SKript Seite 49
Position 27 und 26 → 00 und 7 und 4 → 11
![[my-notes-site/content/htwsaar_pib/Semester 5/MIKRO/lectures/Screenshot 2024-11-26 at 09.13.39.png]]
4.5.1 Adressierungsarten
Wir können keine absolute Adressierung kodieren Da : Adresse 32 Bit und Register auch 32 Bit
Indirekte Adressierung
Aber : Wir können eine Register Nummer kodieren ( 4 Bit )
effektive Adresse : Die Speicheradresse, auf die der Speicherzugriff zugreift
Das Displacement ist zur COmpile Zeit bekannt
Indizierte Adressierung
4.5.2 Endianness-Madness
Wenn wir SPeicherwörter im Speicher ablegen die Größer sind als 1 Byte : verschiedene Arten
Big Endiannes oder Little Endianness
Big Endianness :
das höchstwertigste Byte wird zuerst, d.h an der kleisnten adresse abgelegt
Little Endianness :
das niederwertigste Byte wird zuerst, d.h and der Kleinsten Adresse abgelegt
Es gibt keine Bit-Order oder Endianness im Register Endianness beschreibt die
vgl Seite 53
Big Endian 16Bit Halbwort expandieren : Es kommt in die Oberen 16 Bit Little Endian : in die unteren 16 Bit
4.5.3 Alignment

Wir benutzen die untersten zwei Bits um den Multiplexer anzusteuern

4.5.4 Syntax und Semantik
Für die Lade– und Speicherbefehle mit indizierter Adressierung oder register–indirekter Adressierung mit Verschiebung gilt folgende Instruktionsform.
Befehl{Bedingung}{Typ} Rd, [ Rn { , Index }]
Alles was in [ ] - Klammern steht : effektive Adressierung
Indezierung von Speicherbefehlen
Pre und post Index
PRE :
EA := Rn + Index
Rd <- ( EA )
Rn <- EA
bzw.
EA := Rn + Index
( EA ) <- Rd
Rn <- EA
Befehl{Bedingung}{Typ} Rd, [ Rn { , Index }] !
Ganz Wichtig : Ausrufezeichen
POST :
EA := Rn
Rd <- ( EA )
Rn <- EA + Index
bzw.
EA := Rn
( EA ) <- Rd
Rn <- EA + Index
Befehl{Bedingung}{Typ} Rd, [ Rn ] , Index
Effektive Adresse und Basis Adresse können Aligned / Misaligned sein !
Alignment betriftt die Wortgröße Wort → ganzzahliges vielfaches von 4 Halbwort → ganzzahlliges vielfaches von 2
64 Bit Wort, darauf 8 bit addieren
Praktiukum : Integer Division by constant Prozessor hat kein Divisionsbefehl Beispiel : durch 10 dividieren → multiplizieren mit dem Kehrwert Anstatt 17 / 5 ⇒ mal 2 hoch n durch den Wert Beispiel für den zweiten Teil des Praktikums anschauen Division durch 10
32 Bit Multiplikationsbefehl
1234 soll ausgegeben werden ( Bildschirm / Speicher als Text) Division durch 10 - Befehle werden hier benötigt
Wie bekommen wir 32 Bit konstante in ein Register ?
1234 soll ausgegeben werden ( Bildschirm / Speicher als Text) Division durch 10 - Befehle werden hier benötigt
Wie bekommen wir 32 Bit konstante in ein Register ?
Inline Assembler
Ganz am SChluss : Mashcinen zyklen
Klausur : wie ist ein Befehl kodiert ? Wie viele instruktionszyklen hat dieser ?