Как преобразовать код Javascript в читаемые человеком коды операций или asm? - PullRequest
0 голосов
/ 04 октября 2019

Насколько я знаю, код Javascript может привести к инструкциям JS bytecode или asm (если внутренний JIT-компилятор смог преобразовать код непосредственно в машинные инструкции).

Есть лилюбой способ преобразовать код Javascript в читаемый человеком байт-код JS (или asm-инструкции) - в зависимости от того, как механизм V8 преобразует его?

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Вы можете запустить d8 или узел с --print-bytecode --print-opt-code, чтобы распечатать как байт-код, так и оптимизированный код сборки в стандартный вывод при его создании. Вы можете использовать --print-bytecode-filter=foo и --print-opt-code-filter=foo, если вас интересует только функция foo. Вам понадобится отладочная сборка или сборка выпуска с v8_enable_disassembler = true в его args.gn (сборки регулярного выпуска не включают в себя код дизассемблера для сохранения размера двоичного файла). Оптимизированный код будет сгенерирован, когда функция «горячая», т.е. потратила некоторое время на запуск.

0 голосов
/ 04 октября 2019

Вы можете использовать bytenode из npm для создания исполняемого файла для вашего приложения узла. Если вы хотите прочитать исполняемый файл, вы можете использовать такие инструменты, как objdump, strace, radare2. Вы также можете открыть исполняемый файл в vim и использовать опцию:%! Xxd, чтобы получить более дружественное отношение к человеку.

...