void do_extended_opcode()
{
byte size = reader.ReadByte ();
long end_pos = reader.Position + size;
byte opcode = reader.ReadByte ();
debug ("EXTENDED OPCODE: {0:x} {1:x}", size, opcode);
switch ((ExtendedOpcode) opcode) {
case ExtendedOpcode.set_address:
stm.st_address = reader.ReadAddress ();
debug ("SETTING ADDRESS TO {0:x}", stm.st_address);
break;
case ExtendedOpcode.end_sequence:
stm.set_end_sequence ();
break;
default:
warning ("Unknown extended opcode {0:x} in line number " +
"engine at offset {1}", opcode, reader.Position);
break;
}
reader.Position = end_pos;
}