Forum: Mikrocontroller und Digitale Elektronik ARM ISA: ALIGN direktive


von GinTonic (Gast)


Lesenswert?

Hallo zusammen!

Auch nach ausgiebiger Recherche, verstehe ich noch nicht 100% was die 
ALIGN direktive bei ARM Assembler genau macht. Möglicherweise liegt es 
daran, dass ich nur Erklärungen mit dem gleichen Wortlaut finde.

Mein Code sieht zb folgendermaßen aus:
1
ALIGN 0x00001000
2
ALIGN 4
3
4
MOV R1, #3
5
;...

Meine Interpretation für die erste Zeile ist jetzt, dass das Programm am 
Ende auf Speicher 0x01000 gelinkt werden soll. Was ich jetzt aber mit 
der zweiten Zeile anfangen soll, ist mir völlig schleierhaft.

Wäre echt klasse, wenn mir da jemand kurz erklären könnte, was vor sich 
geht!

Viele Grüße,
GinTonic

von Steffen R. (steffen_rose)


Lesenswert?

GinTonic schrieb:
> Meine Interpretation für die erste Zeile ist jetzt, dass das Programm am
> Ende auf Speicher 0x01000 gelinkt werden soll.

... auf ein Vielfaches von 0x01000 ...

ALIGN nimmt man, wenn die nächsten Daten und Befehle an der nächsten 
Word, Doubleword usw. Grenze anfangen sollen.

von Martin L. (martin_l795)


Lesenswert?

Nach meiner Interpretation wird mit dem Align 4 sichergestellt, daß die 
nächste Anweisung an einem 4-Byte Boundary beginnt, d.h. an einer ohne 
Rest / 4 teilbaren Adresse.

von GinTonic (Gast)


Lesenswert?

Also gelten dann beide Bedingungen parallel? Die Speicherstelle muss ein 
gemeinsames Vielfaches von 0x1000 und 0x4 sein?

von GinTonic (Gast)


Lesenswert?

moment,.... das ergibt keinen Sinn :D

von Steffen R. (steffen_rose)


Lesenswert?

Die Doppelten ALIGN werden keinen besonderen Sinn haben.

Meine Vermutung:

Die Funktion soll ALIGN 4 sein. Wirst Du sicher öfters finden.
Der Code stammt aus einem Programmteil, welcher ALIGN 0x1000 sein soll.

von GinTonic (Gast)


Lesenswert?

Alles klar, vielen Danke :)

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
Noch kein Account? Hier anmelden.