gpt4 book ai didi

Python:检测数据危害的脚本

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:39 24 4
gpt4 key购买 nike

我正在做一个学校项目,编写一个程序来检测汇编指令中的先写后读数据依赖性。我有一个包含说明的列表列表。

一个这样的例子是一个列表,例如
line1 = [[ld a8,0x8910] [mul a3,a2,8] [shl a3,a3,4] [add a3,a3,a8]]

这里最后的加法指令取决于左移 (shl) 的结果,而左移又取决于 mul 指令的结果。

我希望我的代码将依赖输出为 {mul -> sh -> add}

另一个例子:line2 = [ [add a3,a2,a1] [sub a4,a5,a6] [add a9,a2,a4]]输出:{add -> add} {sub -> add}

我想删除指令操作码以获得 line1 = [[a8,0x8910] [a3,a2,8 ] [a3,a3,4] [a3,a3,a8]]然后将目标操作数提取到 dst_list = [a8, a3, a3, a3} 并将源操作数提取到另一个列表中,如 src_list = [ 0x8910, [a2, 8], [a3,4], [a3,a8] ]。我正在考虑从 src_list 中获取第 n 个项目,并在它们匹配时与 dst_list 的 0 到 n-1 个项目和输出索引进行比较。最后使用一些字典输出与我的索引对应的指令。我的方法正确吗?任何人都可以帮助我如何在 python 中实现这一点吗?

到目前为止我已经尝试过:

 dest = re.findall( r'\[(?=([a-z0-9.]+))',str(line))
src = re.findall( r'\,(?=([a-z0-9]+))', str(line))
for i in dest:
dst_list.append([i])
for j in src:
src_list.append(j)

#psuedo code to find hazards
for nth src_item in src_list:
for 0 to n-1 dst_items in dst_list:
if src_list[src_item] == dst_list[dst_item]
OUTPUT dst_item -> src_item

上面的 re.findall 给了我一个包含所有目标操作数的列表和另一个包含源操作数的列表(我需要一个列表列表,每个指令的 2 个 src 参数在一个列表中)。

我如何实现这一点?

最佳答案

因此,让我们首先假设您的汇编指令具有一致的格式,并且它们在字符串列表中,否则无论如何您都必须进行大量预处理,并且应该处理操作码和指令解析那么。

[op_code dest,src1,src2,...,srcn]

例如:

line1 = ["ld a8,0x8910","mul a3,a2,8","shl a3,a3,4","add a3,a3,a8"]

有了它,我们可以做一些 python 魔术,甚至不用担心正则表达式。

def instruction_reader(op_string):
opcode,values = op_string.split(" ")
values_list = values.split(',')
dest = values_list[0]
src = values_list[1:]

return (opcode,dest,src)

有了它,您现在可以通过一些列表迭代器将数据放入正确的桶中

list_of_all = [instruction_reader(item) for item in line1]
opcodes = [op[0] for op in list_of_all]
dests = [dest[1] for dest in list_of_all]
srcs = [src[2] for src in list_of_all]

现在您只需要比较 srcs 和 dests 来找到依赖关系。

dep_list = []
for i,dest in enumerate(dests):
for src in srcs:
if dest in src:
dep_list.append(opcodes[i])

这可以简化为列表理解

dep_list = [opcodes[i] for i,dest in enumerate(dests) for src in srcs if dest in src]

旁白:是的,在 python 中有很多更漂亮的方法可以做到这一点,但我认为在这种情况下,更容易阅读/解析的东西会更好。

关于Python:检测数据危害的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25537826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com