The arithmetic, logical, and move operations include variants which operate immediate-to-register, memory-to-register, register-to-memory, register-and-memory-to-both or memory-to-memory. Since registers may be addressed as part of memory, register-to-register operations are also defined. (Not all variants are useful, though they are well-defined.) For example, the ADD operation has as variants ADDI (add an 18-bit "I"mmediate constant to a register), ADDM (add register contents to a "M"emory location), ADDB (add to "B"oth, that is, add register contents to memory and also put the result in the register). A more elaborate example is HLROM ("H"alf "L"eft to "R"ight, "O"nes to "M"emory), which takes the Left half of the register contents, places them in the Right half of the memory location, and replaces the left half of the memory location with Ones. Halfword instructions are also used for linked lists: HLRZ is the Lisp CAR operator; HRRZ is CDR.