Как получить размер кода операции Python - PullRequest
0 голосов
/ 12 июня 2018

Я разбираю байт-коды Python (co_code).Для некоторых операций я хочу знать длину кодов операций Python в байтах.Где я могу найти длину кодов Python?

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Может помочь простая функция, подобная этой:

def compute_size(opcode):
    if sys.version_info >= (3, 6):
        return 2
    return (1, 3)[opcode < dis.HAVE_ARGUMENT]
0 голосов
/ 12 июня 2018

Все коды операций байт-кода CPython имеют длину 1 байт.На CPython 3.6+ все коды операций дополнительно принимают 1-байтовый аргумент, всего 2 байта на инструкцию.В предыдущих версиях операционные коды меньше специального значения HAVE_ARGUMENT не принимают аргументов, а операционные коды, превышающие это значение, принимают двухбайтовый аргумент, что в общей сложности составляет 1 или 3 байта на инструкцию.

...