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 ?