GraalPython предоставляет тип кода Python, который аналогичен типу кода Python, но содержит базовые байты байт-кода
Код: Выделить всё
co_codeНапомним, что операнды байт-кода обычно представляют собой индексы какой-либо другой таблицы, например пула констант или списка имен переменных. Несмотря на то, что тип кода Graal хранит эту информацию, я подозреваю, что в массиве байтов co_code имеется дополнительная информация.
Чтобы дать некоторое представление о том, что находится в массиве байтов co_code, здесь его значение рассматривается в этом файле
Код: Выделить всё
def five():
return 5
Код: Выделить всё
87654321 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789abcdef
-------------------------------------------------
00000000: 9e52 0d0a 0000 0000 dd5b 6867 1900 0000 .R.......[hg....
00000010: c30c 0000 002f 746d 702f 6669 7665 2e70 ...../tmp/five.p
00000020: 7940 0000 009a 0000 000f 0007 6669 7665 y@..........five
00000030: 2e70 7900 0c2f 746d 702f 6669 7665 2e70 .py../tmp/five.p
00000040: 7900 0000 1964 6566 2066 6976 6528 293a y....def five():
00000050: 0a20 2020 2072 6574 7572 6e20 350a 0000 . return 5...
00000060: 025b 5d72 2fc8 0a00 0000 0000 0000 0000 .[]r/...........
00000070: 0000 0000 0000 0000 0000 0000 0101 0004 ................
00000080: 6669 7665 724b cb05 0100 0000 0000 0000 fiverK..........
00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000a0: 0000 0702 1901 1501 724b cb05 0004 6669 ........rK....fi
000000b0: 7665 02ff ffff 0000 3007 1208 0120 011c ve......0.... ..
000000c0: 1901 0501 0000 0000 0000 00
При изменении возвращаемого значения с 5 на 6 изменения:
Код: Выделить всё
00000080: 6669 7665 724b cb05 0100 0000 0000 0000 fiverK..........
Код: Выделить всё
00000080: 6669 7665 36c7 9bee 0100 0000 0000 0000 five6...........
Примечание к редактированию: У меня были проблемы с получением шестнадцатеричного дампа, который кажется нормальным. Лучше всего создать свою собственную программу с помощью compileall и использовать собственную процедуру шестнадцатеричного дампа.
Подробнее здесь: https://stackoverflow.com/questions/785 ... l-bytecode
Мобильная версия