2009-04-15 6 views

Répondre

4

Vous feriez un bit et avec 0x08 et 0x40 (en supposant que le bit 0 est le bit de plus bas ordre). Vous utiliseriez l'instruction andi pour le faire.

Si t0 $ est la valeur que vous voulez tester:

andi $t1, $t0, 0x08 
andi $t2, $t0, 0x40 

$ t1 sera si le bit 3 est réglé non nul, t2 $ sera non nul si le bit 6 est réglé.

4

Oui, les opérateurs au niveau du bit sont ce que vous utilisez. Vous pouvez ET avec un masque de bits qui a seulement les bits 3 et 6 ensemble. Ensuite, faites une comparaison à zéro.

quelque chose comme (je ne l'ai pas fait assembleur depuis longtemps):

and  r2, r1, 0x48 # r2 = r1 & 0x48 
cmp  r2, 0x48 
jz  zzzzzz #jmp to zzzzz if bits 6 and 3 are set 
+0

Je ne fais pas de mips, mais ça ne va pas sauter si les bits 3 * ou * 6 sont réglés? – dmckee

+0

Vous avez raison. J'étais malpropre. Cela devrait être une comparaison avec 0x48 et ensuite jz au lieu de jnz. – MadCoder

+0

Si vous l'avez réparé, je voterais pour vous. –

2

Une technique pour tester un seul bit dans l'assemblage MIPS est de décaler le bit désiré dans la position de bit le plus significatif et utilisez bltz/bgez pour tester l'état du bit. Cela enregistre une instruction dans les cas où l'instruction andi ne peut pas être utilisée pour sélectionner le bit souhaité.

Questions connexes