def Graphs_build_mips()

in preprocess/asm_mips.py [0:0]


def Graphs_build_mips(asm_file, task):
  gb = Graph_builder(asm_file, None, task)
  subset = True

  selected_nodes = []
  selected_nodes_dict = {}
  for nodes in gb.nodes:
      selected_nodes.append(nodes)

  selected_nodes_tuple_list = sorted(selected_nodes_dict.items(), key=lambda k: k[0], reverse=False)
  index_ins = []
  for i, (index, ins) in enumerate(selected_nodes_tuple_list):
    if 'ins' in ins:
      index_ins.append(index)
  # renaming node
  if subset:
    new_id2node = {}
    rename = {}
    for i in range(len(selected_nodes)):
      for j in range(len(selected_nodes[i])):
        if selected_nodes[i][j] not in rename:
          rename[selected_nodes[i][j].id] = len(rename)
          selected_nodes[i][j].id = rename[selected_nodes[i][j].id]
          # get new id to node mapping, for later use of getting node name
          # does not overwrite previous
          new_id2node[selected_nodes[i][j].id] = selected_nodes[i][j]
    # give it to gb to pass in dynamic function
    gb.new_id2node = new_id2node
#   print(selected_nodes)
  for nodes in gb.nodes:
      for node in nodes:
        selected_nodes_dict[int(node.id)] = node.name

  selected_nodes_tuple_list = sorted(selected_nodes_dict.items(), key=lambda k: k[0], reverse=False)

  # print('==============Edges=============')
  selected_edges = []
  for edge in gb.edges:
    src = gb.id2node[edge.src]
    tgt = gb.id2node[edge.tgt]
    selected_edges.append((src.id,edge.type,tgt.id))

  del gb, selected_nodes
  return list(zip(*selected_nodes_tuple_list))[1], selected_edges #, index_ins