public void register(InstructionSet is)
	{
		int base;
		Instruction i;

		for(int sz = 0; sz < 2; sz++)
		{
			if(sz == 0)	// word
			{
				base = 0xb0c0;
				i = new Instruction() {
					public int execute(int opcode)
					{
						return cmpa_word(opcode);
					}
					public DisassembledInstruction disassemble(int address, int opcode)
					{
						return disassembleOp(address, opcode, Size.Word);
					}
				};
			}
			else	// long
			{
				base = 0xb1c0;
				i = new Instruction() {
					public int execute(int opcode)
					{
						return cmpa_long(opcode);
					}
					public DisassembledInstruction disassemble(int address, int opcode)
					{
						return disassembleOp(address, opcode, Size.Long);
					}
				};
			}

			for(int ea_mode = 0; ea_mode < 8; ea_mode++)
			{
				for(int ea_reg = 0; ea_reg < 8; ea_reg++)
				{
					if(ea_mode == 7 && ea_reg > 4)
						break;
					for(int r = 0; r < 8; r++)
					{
						is.addInstruction(base + (r << 9) + (ea_mode << 3) + ea_reg, i);
					}
				}
			}
		}
	}