dalvik虚拟机寄存器

1、Dalvik虚拟机介绍

        Dalvik虚拟机基于寄存器架构,在代码中大量地使用了寄存器。Dalvik将部分寄存器映射到了ARM寄存器上面,还有部分通过调用栈进行模拟。Dalvik中用到的寄存器都是32位的,如果是表示64位的寄存器,则使用相邻的两个寄存器一起表示。
        在Dalvik中,寄存器采用v0作为起始值,最大可以取值到v65535。每个函数都在函数头部使用.registers指定函数需要用到的寄存器数目,当虚拟机执行到这个函数时,会根据寄存器的数目分配适当的栈控件,这些控件就是用来存放寄存器实际的值的!在Android SDK中有一个名为dalvik.bytecode.Opcodes的接口。


2、寄存器命名规则

        v命名法采用小写的“v”开头,表示函数中用到的局部变量与参数,所有的寄存器命名从v0开始,依次递增。
        p命名法采用小写的“p”开头,其命名规则是:函数中引入的参数命名从p0开始,依次递增。
        假设一个函数中使用到了M个寄存器,并且该函数有N个参数,根据Dalvik虚拟机参数传递方式中的规定:参数使用最后的N个寄存器中,局部变量使用从v0开始的前M-N个寄存器。下面给出一副图示说明:


        比较:使用P命名是为了防止以后如果在方法中增加寄存器,需要对参数寄存器重新进行编号的缺点
        特别说明一下:Long和Double类型是64位的,需

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值