2009-06-20 8 views
7

Que fait exactement cette instruction? Je sais qu'il essaie d'aligner les données avec un multiple d'un nombre spécifique, mais pourquoi auriez-vous besoin de faire cela? Y a-t-il une instruction équivalente dans les autres assembleurs?Instruction 'align' sur MIPS

Répondre

9

Vous alignez généralement les données pour obtenir de meilleures performances. Pour la plupart des processeurs, l'accès à la mémoire est pénalisé lorsqu'il n'accède pas à des limites d'octets spécifiques. Pour les autres assembleurs, il existe souvent une sorte de pseudo-op.align pour cela. La plupart des compilateurs alignent également leurs structures de données (bien que vous puissiez le désactiver à des fins de débogage).

Voir aussi Wikipedia entry.

Notez que les systèmes MIPS non émulés peuvent même se bloquer si vous essayez d'accéder à des cellules de mémoire non alignées (voir here et here).

+0

Merci pour les précisions supplémentaires dans les liens externes! –

0

Il aligne tout à la puissance de deux nième. Son pas une instruction, la directive qui sera traduit en instructions

En ce qui concerne son utilisation, pour exampe:

instructions MIPS32 sont toujours 32 bits. Donc chaque instruction devrait commencer sur une limite de mot. L'ajout d'une directive .align avant le démarrage du code aligne les objets sur 32 bits. Cela présente de nombreux avantages, y compris le fait qu'il ne faut qu'un accès mémoire pour l'extraction de l'instruction, et que cela sera probablement bénéfique sur le cache des instructions.

+0

Que diriez-vous de stocker le double float sur la pile? Il a besoin de 8 octets d'alignement à droite? –

+0

Oui, les doubles sont alignés sur 64 bits – Tom

Questions connexes