asm.js - получает значение указателя

Asm.js имеет дело с большим количеством математики и для простоты использует целые числа как указатели.

Я пытаюсь отладить некоторый код, но я не вижу фактические значения, только "указатели" в asm.js.

Есть ли способ перейти прямо к стоимости?

2 ответа

Решение

Если у вас есть доступ к Module объект, скажем, в инструментах разработчика, и если у вас есть значение указателя и вы знаете, на какую переменную он указывает, вы можете использовать getValue, Например, чтобы получить 32-разрядное целое число в ячейке памяти 2434 Вы бы позвонили:

Module.getValue(2434, 'i32');

Ты можешь использовать i8, i16, i32, i64, float или же double для типа данных в ячейке памяти. Я не знаю, есть ли другие типы, которые вы можете передать.

Причина, по которой он использует int, не для простоты, а для безопасности: код не должен быть в состоянии индексировать за пределами ArrayBuffer: кучи, которую вы видите, имеют дополнительное косвенное обращение точно так же, как usespace не может видеть физические адреса и вместо этого только видит виртуальные адреса (за исключением того, что asm.js не фрагментирует основное хранилище).

Что ты пытаешься сделать?

Если вы пытаетесь получить значение из отладчика, тогда что-то может быть возможным (определите базовый адрес ArrayBuffer, используя точку останова на его конструкции, добавьте индекс).

Если вы хотите получить значение из своего кода C++, скомпилированного в asm.js, то это не сработает, потому что это поставит под угрозу безопасность.

Другие вопросы по тегам