We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS

XOR (Super FX): Difference between revisions

From SnesLab
Jump to: navigation, search
(→‎References: bullet points -> ref)
(speeds likely same)
Line 40: Line 40:
'''XOR''' is an undocumented<sup>[dubious]</sup> (XOR is mentioned on [https://archive.org/details/SNESDevManual/book2/page/n101 page 2-2-7 of Book II] of the Nintendo documentation) [[Super FX]] instruction that performs an exculsive or.
'''XOR''' is an undocumented<sup>[dubious]</sup> (XOR is mentioned on [https://archive.org/details/SNESDevManual/book2/page/n101 page 2-2-7 of Book II] of the Nintendo documentation) [[Super FX]] instruction that performs an exculsive or.


It probably restores the [[ALT0]] state like [[OR]].
It probably restores the [[ALT0]] state like [[OR]].  The speeds are probably the same as OR as well.


The low nybble of the opcode specifies either the immediate value or which general register to use, like OR.  We can deduce this by contradiction because if it were the high nybble instead, [[RPIX]] would have the same opcode as XOR R<sub>4</sub> making them indistinguishable.
The low nybble of the opcode specifies either the immediate value or which general register to use, like OR.  We can deduce this by contradiction because if it were the high nybble instead, [[RPIX]] would have the same opcode as XOR R<sub>4</sub> making them indistinguishable.

Revision as of 09:13, 22 July 2024

Basic Info
Addressing Mode Opcode Length Speed
Immediate 3FCn 2 bytes
Implied (type 1) 3DCn 2 bytes
Flags Affected
B ALT1 ALT2 O/V S CY Z
0? 0? 0? .? ? .? ?

XOR is an undocumented[dubious] (XOR is mentioned on page 2-2-7 of Book II of the Nintendo documentation) Super FX instruction that performs an exculsive or.

It probably restores the ALT0 state like OR. The speeds are probably the same as OR as well.

The low nybble of the opcode specifies either the immediate value or which general register to use, like OR. We can deduce this by contradiction because if it were the high nybble instead, RPIX would have the same opcode as XOR R4 making them indistinguishable.

HIB's opcode is C0 and it appears to not care whether ALT1/ALT2 are set. If that is the case, then we can conclude that like OR, R0 is not available as XOR's operand and neither can zero be the immediate value. (But R0 can still be the source register.)

The source and destination registers should be specified in advance using WITH, FROM, or TO. Otherwise, R0 serves as the default.

Syntax

XOR Rn
XOR #n

See Also

References

  1. https://en.wikibooks.org/wiki/Super_NES_Programming/Super_FX_tutorial#Instruction_Set_Table
  2. Example 3 on page 2-8-10 of Book II of the official Super Nintendo development manual