Asm.js涉及大量数学,为简单起见,它使用整数作为指针。
我正在尝试调试一些代码,但我看不到实际值,只能看到asm.js中的“指针”。
有没有办法直接达到价值?
答案 0 :(得分:2)
如果您有权访问Module
对象,请参阅开发工具,如果您有指针值并知道它指向的变量类型,则可以使用getValue
。例如,要在内存位置2434
检索32位整数,请调用:
Module.getValue(2434, 'i32');
您可以使用i8
,i16
,i32
,i64
,float
或double
作为内存位置的数据类型。我不知道你能否通过其他类型。
答案 1 :(得分:1)
它使用int的原因并不是为了简单起见它的安全性:代码不应该能够在ArrayBuffer之外编写索引:你看到的堆有一个额外的间接完全相同方式使用空间无法查看物理地址,而只能看到虚拟地址(除了asm.js不会对底层存储进行分段)。
你想做什么?
如果您试图从调试器获取值,那么可能会有一些事情(通过在其构造上使用断点来计算ArrayBuffer的基址,添加索引)。
如果您希望将C ++代码中的值编译为asm.js,那么它将无法正常工作,因为它会危及安全性。