The tagged data types have been touched on briefly already. They are stored using the most significant 30 bits for the value and the least significant 2 bits for a tag. The tag bits are used to indicate the type of the data from an application program’s perspective. Tagged data values are of great use when implementing functional and logical languages such as Haskell, LISP, Smalltalk, Prolog and RUFL1 . The instructions that deal with tagged data (taddcc and tsubcc) will set the overflow flag if the tag of either operand is nonzero (or if normal overflow occurs). For this reason tagged operations are usually followed by a conditional branch to a routine that will check the format of the operands. To make this even easier there are special forms of the tagged operations (taddcctv and tsubcctv) that automatically perform a trap (similar to a software interrupt) if the overflow bit is set during the execution of the operation.
Other than this, tagged data values are treated as normal unsigned values when manipulated by the processor.