2009-04-15 6 views

Antwort

4

Sie würden ein bitweises und mit 0x08 und 0x40 tun (vorausgesetzt, Bit 0 ist das niedrigste Bit). Sie würden den Befehl andi verwenden, um dies zu tun.

Wenn $ t0 ist der Wert, den Sie testen möchten:

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

$ t1 wird nicht Null sein, wenn Bit 3 gesetzt ist, wird $ t2 nicht Null sein, wenn Bit 6 gesetzt ist.

4

Ja, bitweise Operatoren verwenden Sie. Sie können UND mit einer Bitmaske, die nur Bits 3 und 6 gesetzt hat. Dann mache einen Vergleich mit Null.

so etwas wie (ich habe nicht Assembler in einer langen Zeit getan):

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

Ich mache keine Mips, aber wird das nicht springen, wenn die Bits 3 * oder * 6 gesetzt sind? – dmckee

+0

Sie haben Recht. Ich war schlampig. Es sollte ein Vergleich zu 0x48 und dann jz statt jnz sein. – MadCoder

+0

Wenn Sie es behoben haben, würde ich Sie stimmen. –

2

Eine Technik für ein einzelnes Bit in MIPS Montag testen, um das gewünschte Bit in die höchstwertigen Bits Position zu verschieben und Verwenden Sie bltz/bgez, um den Zustand des Bits zu testen. Dies speichert eine Anweisung in Fällen, in denen die Anweisung andi nicht zum Auswählen des gewünschten Bits verwendet werden kann.

Verwandte Themen