Как я могу проверить код x86 / x64, сгенерированный V8 из WebAssembly? - PullRequest
0 голосов
/ 24 апреля 2020

https://webassembly.studio/ позволяет проверять файлы WebAssembly (WASM) и соответствующий сгенерированный SpiderMonkey код x86. Я бы хотел аналогичным образом проверить инструкции, сгенерированные компиляторами WASM V8 (Liftoff и TurboFan) .

Я совершенно незнаком с базой кодов / API V8 (я скомпилировал и связал его и следовал некоторым учебники, хотя). Кажется, есть класс v8::CompiledWasmModule, но он не предоставляет доступ к сгенерированным инструкциям x86 / x64 ни Liftoff, ни TurboFan.

WebAssembly - добавление нового кода операции описывает процесс добавления кода операции WASM в V8. На первый взгляд подходящие функции для компиляции / выполнения WASM доступны в упомянутых классах. Тем не менее, они кажутся довольно глубокими в пределах кодовой базы V8, и было бы трудно получить доступ, если бы я связал V8 как библиотеку. Кроме того, я не уверен, соответствует ли это Liftoff или TurboFan.

Может кто-нибудь, знакомый с базой кода V8, дать мне несколько советов о том, как я могу получить доступ к модулю компиляции WebSsembly Liftoff и / или TurboFan, чтобы получить x86 / x64 код?

1 Ответ

0 голосов
/ 25 апреля 2020

Для проверки сгенерированного кода вы можете запустить оболочку d8 с флагом --print-wasm-code. Вам понадобится либо отладочная сборка, либо сборка выпуска с аргументом v8_enable_disassembler = true GN.

Не существует способа извлечь сгенерированный код через API V8; так что если это то, что вы хотите, то вам придется добавить это. Имейте в виду, что V8 не предназначен для использования в качестве отдельного компилятора, а это означает, что сгенерированный код предполагает, что он будет работать «внутри V8», поэтому, если вы хотите использовать его для чего-то еще, вам придется внести значительные изменения.

...