Je suis auto-étude de l'architecture d'ordinateur offre à l'Université du Michigan. Je ne comprends pas pourquoi la mise en page de la mémoire pour d starts at 312 to 319 instead of 308 http://www.flickr.com/photos/[email protected]/4442695706/. (http://www.flickr.com/photos/[email protected]/4442695706/) Peut-être que je n'ai pas compris le Golden rule specified http://www.flickr.com/photos/[email protected]/4441916461/sizes/l/ ici (http://www.flickr.com/photos/[email protected]/4441916461/sizes/l/) bien.Mips Calcul de la disposition des données
Répondre
Le deuxième lien montre que MIPS ne peut pas regrouper les variables, donc les adresses qu'ils prennent doivent tomber sur les limites des mots.
Si le mot court est aligné sur un demi-mot, il prend deux octets, int, est aligné sur un mot de sorte qu'il occupe 4 octets, le double doit être aligné sur deux mots, donc 8 octets.
Afin d'aligner ces lieux ..
A zéro bit le moins significatif (LSB) indiquerait tous les autres ou tous les 2 octets (demi-mot aligné), 2 Zéros indique chaque octet 4 et 3 zéros tous les 8 octets.
Address (4 LSBs)
XXX0 - half word aligned (2 bytes)
XX00 - Word aligned (4 bytes)
X000 - Double word aligned (8 bytes)
Le double doit être double mot aligné de sorte qu'il ne peut pas démarrer à 308 (100110100) parce qu'il est seul mot aligné (2 LSB = 0) il doit commencer à la prochaine alignement de mot double 312 (100111000)
[Addr] [Binary] [Alignment]
300 100101100 Word, Half-Word
301 100101101
302 100101110 Half-Word
303 100101111
304 100110000 Double-Word, Word, Half-Word
305 100110001
306 100110010 Half-Word
307 100110011
308 100110100 Word, Half-Word
309 100110101
310 100110110 Half-Word
311 100110111
312 100111000 Double-Word, Word, Half-Word
L'accès mémoire sur le MIPS est aligné sur le mot, ce qui signifie qu'il lit la mémoire 32 bits/4 octets à la fois. Puisque la variable "b" est un seul octet, elle lit en fait les adresses 300-303. Si la variable "c" devait commencer à 301, le processeur devrait savoir que "b" est seulement un octet et mettre à zéro les autres octets et éventuellement le déplacer vers la position LSB (ou le compilateur devrait le faire). Quoi qu'il en soit, il est plus efficace de descendre tout l'accès à la mémoire sur les limites de 4 octets (multiple de 4). Pour plus d'informations, voir Data Structure Alignment pour plus d'informations.
- 1. LWUIT: Problème de calcul de la disposition
- 2. Disposition des données en mémoire
- 3. Stockage et calcul des données dans Hashtable
- 4. Mips: mot de charge
- 5. Numéro de programmation MIPS
- 6. Imbrication de la disposition relative dans la disposition linéaire
- 7. Disposition des voies de circuit
- 8. Disposition des onglets Android
- 9. Résultat de calcul des données de base au démarrage
- 10. Calcul des données entre l'enregistrement de la base de données SQL dans Visual Studio
- 11. Programme MIPS pour déterminer la réussite ou l'échec des tests
- 12. Disposition des sommets OpenGL
- 13. Instruction 'align' sur MIPS
- 14. Définir la disposition des modules dans application.ini
- 15. Facebook pour la disposition des icônes Android
- 16. CSS: modifier la disposition des boutons
- 17. Grille WPF pour la disposition des fenêtres
- 18. télécharger des données de .csv avec plusieurs feuilles de calcul
- 19. Code MIPS cassé
- 20. Syntaxe SQL pour le calcul des résultats des données renvoyées
- 21. Problème avec l'assemblage mips
- 22. Exportation de données de la feuille de calcul vers la base de données Pgsql
- 23. MIPS mot de charge syntaxe
- 24. valeur absolue dans MIPS
- 25. MIPS enregistrer comparateur
- 26. Importer des données dans une feuille de calcul - Actualiser automatiquement
- 27. Algorithmique Problème dans MIPS
- 28. Problème avec la disposition de la table
- 29. Définition de la disposition des fenêtres de sortie dans NetBeans
- 30. Modification de la disposition des options de produit dans Magento
Salut Nate Heinrich: Merci beaucoup pour votre explication détaillée, elle répond parfaitement à ma question. Mais pourquoi "MIPS ne peut pas emballer variable" ou les variables doivent être alignés? Est-ce que "pack de variables" rendrait le processeur lent? –