Ihr Ziel „redbee econotag“ als ARM7 angegeben, die ARMv4 Architektur. ARMv4 bietet keine unaligned Speicherzugriff wie ein ARMv7 oder einer Intel-Maschine.
Zitiert von ARM Dokumentation :
Auf ARMv4 und ARMv5 Architekturen und auf der ARMv6-Architektur je nachdem, wie es konfiguriert ist, muss darauf geachtet werden, wenn nicht ausgerichteten Daten im Speicher zugreifen, damit unerwartete Ergebnisse zurückgegeben werden. Wenn beispielsweise ein herkömmlicher Zeiger verwendet wird, um ein Wort im C- oder C ++ - Quellcode zu lesen, erzeugt der ARM-Compiler Assemblersprachcode, der das Wort unter Verwendung eines LDR-Befehls liest. Dies funktioniert wie erwartet, wenn die Adresse ein Vielfaches von vier ist, beispielsweise wenn sie auf einer Wortgrenze liegt. Allerdings , wenn die Adresse nicht ein Vielfaches von vier ist, gibt die LDR ein gedrehtes Ergebnis eher als eine echte unaligned Wort Last durchführen. Im Allgemeinen ist diese Drehung nicht das, was der Programmierer erwartet .