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