Hallo zusammen Schaue mir derzeit die etwas ältere ARMv7 Architektur genauer an. Nun ist mir aufgefallen, dass der Core Byte eigentlich auch Adressierung beherscht. Das heisst, er ist in der Lage auch ungerade Adressen im Speicher anzusprechen, ist dies korrekt? Oder bin ich da falsch gewickelt? Die Frage geht dahin: Warum ist nun das alignment im Speicher bspw. einer Struktur trotzdem von Wichtigkeit? Kann mir jemand Helfen beim Lösen des Knopfes...? Vielen Dank! Grüsse Markus
>Schaue mir derzeit die etwas ältere ARMv7 Architektur Was heisst "älter"? ARMv7 ist aktuell -> alle Cortexe. >Das heisst, er ist in der Lage auch ungerade Adressen im >Speicher anzusprechen, ist dies korrekt? Wie sollte er sonst einzelne Bytes laden? Oder denkst Du, dazwischen wären jeweils 3 Bytes heisse Luft? >alignment im Speicher bspw. >einer Struktur trotzdem von Wichtigkeit? Bei einzelnen Bytes gibt es kein "Alignment", nur relevant bei Objekten grösser 1 Byte, wenn nicht-aligned müssen diese evtl in mehreren Speicherzugriffen geladen werden, ist also langsamer. --> ARMv7 Architecture Reference Manual.
This is a required field schrieb: > Was heisst "älter"? ARMv7 ist aktuell -> alle Cortexe. Ich muss mich präzisieren: Ich meine den ARM7TDMI, dies hat nichts mit den neuen Cortex zu tun. Dieser Core hat mittlerweile ausgedient, ist auf der offiziellen ARM Seite auch nicht mehr für neue Desgins empfohlen! This is a required field schrieb: > Wie sollte er sonst einzelne Bytes laden? > Oder denkst Du, dazwischen wären jeweils 3 Bytes heisse > Luft? Nein, natürlich nicht! Man könnte ja auch bspw. Wortweise adressieren und einzelne Bytes rausmaskieren? Hat nichts mit heisser Luft zu tun! This is a required field schrieb: > Bei einzelnen Bytes gibt es kein "Alignment", nur relevant > bei Objekten grösser 1 Byte, wenn nicht-aligned müssen diese > evtl in mehreren Speicherzugriffen geladen werden, ist also langsamer. Ja, das ist schon klar... und das Reference Manual hab ich selber auch gefunden!
Markus schrieb: > Schaue mir derzeit die etwas ältere ARMv7 Architektur genauer an. Nun > ist mir aufgefallen, dass der Core Byte eigentlich auch Adressierung > beherscht. Das heisst, er ist in der Lage auch ungerade Adressen im > Speicher anzusprechen, ist dies korrekt? Oder bin ich da falsch > gewickelt? Die diversen ARM Cores verhalten sich dabei recht verschieden. Man muss da also jeweils in die Dokumentation vom Core reinsehen um zu erfahren, was genau dabei passiert. Alte Cores wie ARM2 bis mindestens ARM7TDMI ignorieren die unteren 2 Bits beim Schreiben. Beim Laden rotieren sie die Daten anhand der Adresse. Der Unterschied zwischen Byte- und Word-Loads besteht da folglich nur in der Maskierung. Wenn man also ein falsch aligntes Wort läd, dann bekommt man das adressierte Byte in Bits 0-7 des Registers, und die übrigen Bits des adressierten Wortes entsprechend rotiert. Freilich ist das nicht unbedingt das, was man haben will. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3772.html Bei ARMv7 hängt es auch vom exakten Core ab. Cortex-M0/M1 können es nicht, M3/M4 können es.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.