docs: def encode_instruction(self, pc, instr):
          """
          Given an instruction string, generate the encoded bit string.
          PC (instruction index is used for branch label resolution)
          """
          data = instr.split()
          operation = data[0]
  
          try:
              mips_op_info = MIPS.operations[operation]
          except KeyError, e:
              raise RuntimeError('Unknown operation: {}'.format(operation))
  
          # Grab the parsing info from the assembler operations table
          # Generate the initial operand map using the specified tokenizer
          parse_info = self.operations[operation]
          encoding_map = parse_info.tokenizer(parse_info.tokens, ''.join(data[1:]))
  
          # Get the binary equivalents of the operands and MIPS operation information
          self.resolve_operands(encoding_map, operation, pc)
  
          # Pull MIPS operation info into encoding map
          self.resolve_operation_info(encoding_map, mips_op_info)
  
          instruction = self.mips.generate_instruction(mips_op_info.format)
          return instruction.encode(encoding_map)