我不是特别确定如何解释这个,但这是我目前得到的输出:
0x0 PUSH1 80 ['80']
0x2 PUSH1 40 ['40']
0x4 MSTORE []
0x8 PUSH2 0010 ['0010']
每次出现 PUSH 项目时,我想将最后一个项目水平插入到列表中,这样我就得到了堆栈的这种表示形式:
0x0 PUSH1 80 ['80']
0x2 PUSH1 40 ['40', '80']
0x4 MSTORE
0x8 PUSH2 0010 ['0010', '40', '80']
这是我当前的代码:
for (addr, op, params), y in zip(self.instructions, self.stack[::-1]):
codes = []
for x in range(0, 33):
if op == 'PUSH' + str(x):
codes.append(params)
print addr + "\t" + op + "\t\t" + params + "\t" + str(codes)
如果不清楚,我很抱歉,我已经坚持了几个小时,感谢您的帮助!
最佳答案
您的问题在您发布的代码的第二行。你在做 codes = []
循环的每次迭代都会删除代码列表的内容。尝试将其移至 for
上方循环,这样它就不会一直被删除。
此外,您的实现似乎非常低效,因为您不需要实际循环 33 次来检查代码,您可以只使用比较。首先,通过执行 number = int(op[-1])
获取操作结束时的数字, 然后你可以检查 if (op[0:-1] == 'PUSH') and (0 <= number < 33): ...
关于Python - 在表格中水平插入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51381534/