我正在用 python 处理汇编语言源代码。我的主表由操作码驱动,包含有关每个操作码的信息,包括寄存器操作数的数量/使用情况、操作的大小等。它当前存储为以操作码为键和指标列表作为值的字典。它可以工作,但很容易搞砸,当我必须修复它时,我不记得它是如何工作的。有没有更好的方法将数据与处理分开?
opdefs={ #operator defs
#[number of register operands,
# <for each operand code 1=dest,2=src,3=both,4=overhead>,
#storage use code:0 for none, 1 for dest, 2 for source
#operation size(-means call opsizer routine)]
'cpy2': [2,1,2,0,4], 'cpy1': [2,1,2,0,2], 'cpy4': [2,11,12,0,8],
其中,cpy2 有两个寄存器操作数,第一个是目标,第二个是源,它没有存储引用,长度为 4 个字节。
主循环,在标记文件的每一行之后看起来像
numoperands=opdefs[tokens[0]][0] #numer of operands
for operandnum in range(1,numoperands+1):
if opdefs[tokens[0]][operandnum]==1: #dest register
destreg(tokens[operandnum]) #count times register is loaded
我不介意我只运行一次,但我认为必须有更好的方法来组织或编码它。有什么建议么?