Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 基于寄存器的虚拟机如何实现寄存器_Android_Dalvik_Vm Implementation_Parrot - Fatal编程技术网

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的工作原理,最好的资源就是源代码本身。例如,下面是,它将立即数存储到寄存器中