- MicroPython Unix port can dump bytecode in assembly form with "-v -v" switches.
- tools/mpy-tool.py from MicroPython distribution, despite its generic name, is quite adhoc tool to "freeze" bytecode files into executable.
- opcode module which allows to convert from raw bytecode opcodes and their string names and vice versa, and means to classify bytecodes based on parameters they take. This module is based on CPython's opcode module, which is not documented in the official CPython documentation, but turns out it's part of the public API and used by various projects (e.g. PyPy). MicroPython's version is roughly, but not completely compatible with CPython.
- mpylib is a module to load and write .mpy bytecode files. This module is adhoc for micropython-lib. But it tries to present result of loading by emulating Python's standard CodeType objects.
- dis is a well-known CPython module allowing to disassemble bytecode (roughly, what "micropython -v -v" does). Currently, it works only with code objects loaded using the mpylib module above.
All this stuff is very experimental at the moment and subject to change. The idea is to make "opcode" and "dis" module as close as possible to to CPython's versions, and extend the feature set they cover (which will likely require changes to MicroPython itself, to be delivered via micropython-dev variant. This won't be fully possible, as MicroPython's bytecode and code object are different from CPython's. So, another idea is to provide suitable compatible, but expressive API for MicroPython-specific aspects.