Android 基于寄存器的虚拟机如何实现寄存器
基于寄存器的虚拟机如何实现寄存器 我在网上读了很多关于基于注册的虚拟机的信息,我看到了Android 基于寄存器的虚拟机如何实现寄存器,android,dalvik,vm-implementation,parrot,Android,Dalvik,Vm Implementation,Parrot,基于寄存器的虚拟机如何实现寄存器 我在网上读了很多关于基于注册的虚拟机的信息,我看到了intr[16]用作实现寄存器的方法。这就引出了一些问题,比如像这样的机器如何处理长时间或浮动 Parrot和Dalvik都是基于注册的虚拟机。Parrot表示,它有一个寄存器窗口,允许无限数量的寄存器,dalvik最多支持65536个寄存器。我想知道这些寄存器是如何在这些虚拟机上实现的 我希望看到实际实现的代码,因为我感兴趣的是它们如何能够存储不同的值,以及它们是在调用操作码时创建的还是始终存在 谢谢在dal
intr[16]代码>用作实现寄存器的方法。这就引出了一些问题,比如像这样的机器如何处理长时间或浮动
Parrot和Dalvik都是基于注册的虚拟机。Parrot表示,它有一个寄存器窗口,允许无限数量的寄存器,dalvik最多支持65536个寄存器。我想知道这些寄存器是如何在这些虚拟机上实现的
我希望看到实际实现的代码,因为我感兴趣的是它们如何能够存储不同的值,以及它们是在调用操作码时创建的还是始终存在
谢谢在dalvik中,每个寄存器都是32位宽的。使用2个寄存器存储长/双精度值。实际寄存器值在调用堆栈中“持久化”,但可能暂时存在于实际的物理机器寄存器中
寄存器数量的64k限制是由于dex文件中保存寄存器数量的字段大小造成的,该字段为16位。实际上,方法不需要那么多寄存器
如果你想更深入地了解dalvik的工作原理,最好的资源就是源代码本身。例如,下面是,它将立即数存储到寄存器中