2010-12-10 82 views
1

de lecture à travers un papier pour l'ARM CPU Cortex-M3 Je trouve cette ligne confusion:Alignement des données et relation de zéro bits?

Les plus faibles 2 bits de la pile pointeurs sont toujours 0, ce qui signifie ils sont toujours mot aligné

J'ai vu des déclarations similaires ailleurs. Quelle est la logique derrière certains bits zéro => un certain alignement?

Répondre

2

Si les 2 bits LS sont toujours zéro, les adresses ne peuvent être multiples de 4, à savoir les adresses ne peuvent être:

Hex  Binary 
xxxxxxx0 bbbbbbbbbbbbbbbbbbbbbbbbbbbb0000 
xxxxxxx4 bbbbbbbbbbbbbbbbbbbbbbbbbbbb0100 
xxxxxxx8 bbbbbbbbbbbbbbbbbbbbbbbbbbbb1000 
xxxxxxxc bbbbbbbbbbbbbbbbbbbbbbbbbbbb1100 

(Si cela peut aider, pensez à l'équivalent en décimal - un nombre que les extrémités en 00 est un multiple de 10^2 = 100).

+0

Oh bien sûr. D'une certaine façon, je pensais que les pointeurs eux-mêmes étaient alignés lorsqu'ils étaient stockés - pas qu'ils pointaient vers des données alignées. – Oystein