V8版本10.7.0(候选(
我已经从几个对象创建了一个元素数组
在此处输入图像描述
对于v8内置函数,使用"%DebugPrint"获取指向数组对象的指针
在此处输入图像描述
我在存储器中查找数组对象"的地址;0x000001BE0010BC5D";,
在此处输入图像描述
我看到第一个地址对应于对象的映射地图地址是加密的
我很想知道如何手动解码地址
它不是加密的,而是压缩的。因此,它有助于在反汇编程序中打印32位值;在这种情况下,这将是数组映射的0x002c3b51
(打印的64位值的下半部分(。由于所有对象都位于同一堆中,因此可以手动解压缩该地址,方法是添加与数组地址相同的高32位前缀,即0x000001be
。因此,地图的完整地址是0x000001be002c3b51
(正如您在第二张屏幕截图中已经看到的那样(。
第一个64位值的上半部分是数组的第二个字段的压缩版本;属性";后备存储器。
附带说明:请学习如何将代码作为代码发布,而不是作为屏幕截图。