代码之家  ›  专栏  ›  技术社区  ›  my_question

如何/在何处填充opname?

  •  2
  • my_question  · 技术社区  · 6 年前

    我正在看python 3.7中的dis模块源代码,有一件事让我困惑,我看不到 opname 但它是直接使用的。例如,以下是访问它的方式:

    348         yield Instruction(opname[op], op,
    349                           arg, argval, argrepr,
    350                           offset, starts_line, is_jump_target)
    

    但是opname在哪里填充?

    以下是所有“opname”事件的列表:

    Lib>grep -n "\<opname\>" dis.py
    185:     "opname opcode arg argval argrepr offset starts_line is_jump_target")
    187:_Instruction.opname.__doc__ = "Human readable name for operation"
    203:         opname - human readable name for operation
    241:        fields.append(self.opname.ljust(_OPNAME_WIDTH))
    348:        yield Instruction(opname[op], op,
    

    我在C源代码中用greed“opname”也找不到。

    1 回复  |  直到 6 年前
        1
  •  3
  •   user2357112    6 年前

    它来自前面的那一行 from opcode import * . 这个 opname 列表填充在 opcode.py ,内容相当简单。