2015-03-30 2 views
3

J'éprouve des difficultés à traduire les instructions PowerPC suivantes:Comment fonctionne extrwi?

extrwi r12, r10, 8, 16

Je suis suppose que cela signifie:

r12 := (r10 << 24) AND 00000000000000000000000011111111

Mais cela ne semble pas avoir raison. Est-ce que quelqu'un peut vérifier que c'est correct ou non? Merci :)

+0

POWER effectue des rotations et des masques. Cette opération * fait tourner * 'r10' à gauche de 24, puis masque les 24 bits les plus élevés. Il en résulte un décalage * droit * et un masque. – EOF

+0

Merci :) a décalé et tourner confus –

+0

@EOF: voulez écrire cela comme une réponse? me semble assez correct :) –

Répondre

1

extrwi r12, r10, 8, 16 va extraire 8 bits de r10 à partir 16 bits (avec le bit 0 étant le bit d'ordre le plus élevé (le bit de signe)).

Donc, pour votre question, vous êtes presque tout, sauf qu'il est un tourner gauche par 24 au lieu d'un décalage à gauche 24, puis ANDing avec un masque de bas 8 bits (comme EOM mentionné):

r12 := (r10 <rotate left by> 24) AND 00000000000000000000000011111111 

Extrait et Justifier à droite (Word) immédiat:

Voir PowerPC ISA livre I, p. 160 et explication en p. 74: https://www.ibm.com/developerworks/systems/library/es-archguide-v2.html