Wie funktionieren verschiedene Adressierungsarten Assembler?

Erste Frage Aufrufe: 482     Aktiv: 01.12.2021 um 19:48

0

Unter anderem die absolute Adressierung, die indirekte Adressierung, und die indizierte Adressierung müsste ich eigentlich verstanden haben. Hab leider überhaupt keine Vorstellung davon. Vielleicht kann das ja jemand erklären.

Diese Frage melden
gefragt

Schüler, Punkte: 12

 
Kommentar schreiben
1 Antwort
1

Hallo ally.t, da du keinen Prozessor angegeben hast versuche ich das mal mit abstrakten Begriffen. Die absolute Adressierung ist die einfachste.

Store r1, #20000000 -> Speichere den Inhalt von Register r1 direkt an der angegebenen Adresse 20000000.

Bei der indirekten Adressierung wird ein zusätzliches oder spezielles Adressregister zur Bestimmung des Speichers benutzt.

Load ar1, #20000000 -> Lade ar1 (spezielles Adressregister) mit der Zieladresse 20000000.

Store r1, ar1 -> Speichere den Inhalt von r1 dorthin wo ar1 zeigt. Hier also nach 20000000.

De indizierte Adressierung wird meist für strukturierte Zeiger und/oder Arrays benutzt. Hier kommen häufig drei Register zum Einsatz. Das Datenregister (r1), das Adressregister (ar1) und das Indexregister (ir1).

Load ar1, #20000000 -> Lade ar1 (spezielles Adressregister) mit der Zieladresse 20000000.

Load ir1, #5 -> Lade den Offset 5 ins Indexregister.

Store r1, ir2, ar1 -> Speichere den Inhalt von r1 dorthin wo ar1 zeigt, plus das Indexregister, also nach 20000005.

Das ist nur ein grober Abriss. Oft können die Register frei gewählt werden und hängt die Adressrechnung beim Indizieren vom Datentyp ab. Speichert der letzte Befehl 32Bit ab wird r1 dann statt in 20000005 in 20000020, also 5*4 Byte (32Bit) ab. Auch ein automatischer Inkrement oder Dekrement des Indexregisters gibt es. So können recht effizient Schleifen realisiert werden. ARM Prozessoren bieten da sehr viel, andere aber auch. Gruß jobe

Diese Antwort melden
geantwortet

Sonstiger Berufsstatus, Punkte: 505

 

Kommentar schreiben