Pourquoi avons-nous Signe Étendre en charge parole de l'enseignement?
Je suis en train d'apprendre MIPS 32 bits. Je voulais vous demander ce que pourquoi nous faire Signe de Prolonger la 16 bits de décalage (en un Seul Cycle du chemin de données) avant de l'envoyer à l'ALU en cas de Magasin de Mot?
OriginalL'auteur Fahad Uddin | 2011-09-18
Vous devez vous connecter pour publier un commentaire.
Sonne comme le décalage de 16 bits est signé Complément de 2 nombre, c'est à dire qu'il peut être positif ou négatif.
Lors de la conversion à 32 bits, le bit le plus significatif doit être copié dans la partie supérieure de 16 bits afin de garder le signe de l'information.
Le contenu du registre de base est de 32 bits, et c'est ce qui se passe vraiment en ALU.
OriginalL'auteur jpa
Je ne sais pas si c'est utile pour vous maintenant, mais je vous poste quand même.
Laissez-nous examiner dans un très sens très général, un tableau d'instructions en C++ c'est à dire Un[0],A[1], [2] .....
Le "figuratif" distance entre deux instructions est de 1 UNITÉ.
Permet de prendre cette analogie pour MIPS. En MIPS, au sens figuré chaque instruction est séparé par un "1 UNITÉ", cependant, 1 UNITÉ = 4 Octets en MIPS. Chaque instruction est de 4 Octets de long et c'est pourquoi, lors du déplacement de l'enseignement de l'instruction, le PC est incrémenté de 4 c'est à dire PC+4. Ainsi, l'écart entre l'instruction i et de l'instruction i+2 est "symboliquement" 2, mais en fait de 2*4=8 c'est à dire PC+4+4
De revenir à des décalages qui sont spécifiés dans les instructions de branchement, le décalage représente le "figuratif" distance à partir de la prochaine instruction(une instruction à la suite de la Branche). Donc, pour obtenir la "vraie" distance, le décalage est multiplié par 4. C'est la raison pour laquelle nous sommes chargés de "signe-les étendre" le décalage de 2 bits vers la GAUCHE, car la gauche déplace tout valeur binaire de n bits résultats en multipliant cette valeur par 2^n. Dans notre cas, 2^2 = 4
Donc la cible réelle de l'adresse d'une branche de l'instruction du PC+4+4*Décalage.
Espère que cette aide.
OriginalL'auteur Jonna
Au meilleur de ma connaissance,de charge ou de stocker des instructions sur la valeur de décalage est ajouté à la valeur dans le registre temporaire,temp. registre de 32 bits et de l'opération d'addition de 16 bits et 32 bits n'est pas possible,la valeur est signe étendu.
OriginalL'auteur buddha
Je pense que vous êtes l'obtention de votre concepts un peu de mal ici.
Les 5 bits de poids que vous pensez d'aller à l'intérieur de l'ALU, en fait aller à l'intérieur du registre de la mémoire pour sélectionner l'une des 32[2^5] les registres.
Chaque registre lui-même est de 32 bits. Donc, ajouter le décalage de la valeur de registre, vous devez vous connecter à l'étendre à 32 bits.
ALU opération est toujours entre les deux registres de la même taille dans le cycle du chemin de données pour MIPS.
OriginalL'auteur TheBlueNotebook
Dans le matériel d'une machine 32 bits, la plupart ALU prendre 32 bits entrées, et tous les registres sont des registres 32 bits.
De travailler avec vos données, il doit être de 32 bits, ce pourquoi nous SIGNE-les étendre, cependant, une autre approche consisterait à ZÉRO s'étendre, mais de SIGNE prolonger est utilisé lorsque vous traitez avec immédiates et les décalages de préserver le signe en complément de 2.
OriginalL'auteur Stack Player
L'extension du signe qui se passe par exemple dans le cas de M68xxx que des machines en cas de chargement des registres d'adresse. Pas ainsi dans le cas de registres de données.
avoir par exemple
conduit dans le cas de données de registre de chargement de $0000FFFF, dans le cas de la
registre d'adresse de chargement toutefois à $FFFFFFFF.
Pour le comprendre, construire les deux en complément de la signature de négatif
présentation, $FFFF, d'étendre le nombre de 32 bits et refaire les deux
en complément, la recherche de la représentation correspondante en 32 bits.
Des acclamations et des salutations,
Stephan S.
OriginalL'auteur Phonon