首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

dalvik 基于寄存器

2013-01-28 
dalvik 基于寄存器? dalvik 基于寄存器?从函数调用的角度看恕我见识浅薄,我接触到的几种实际系统的函数调

dalvik 基于寄存器?

 

dalvik 基于寄存器?


  从函数调用的角度看

  恕我见识浅薄,我接触到的几种实际系统的函数调用都是用栈的方式来实现的。
 
  有以下几点
 
  1 CPU指令集本身提供了压栈,出栈指令。
 
  2 编译器在编译的时候组织这些栈操作指令,结合跳转指令来实现函数的调用。
 
  3 每个线程都有自己独立的栈,甚至不同的模式下也有不同的栈。
 
 
  dalvik 本身就是模拟一个实际的系统,也有函数调用,
 
  因此每个java线程也有一个java Frame的空间,
 
 
 
  dalvik中的所谓的java线程 就是一个普通的os线程扮演着一个java interpreter的角色。
 
  作为一个普通的os线程,本身拥有os给予的栈。
 
  作为一个java interpreter,拥有一个独立的java 栈。在其中进行解释执行的dalvik 字节码 操作的是java 栈。
 
  注意 此栈非彼栈。
 
   
 
  有趣的是dalvik 字节码指令集中没有提供栈操作指令,反而提供了更高级别的指令 invoke,return等。
 
  从dex code的层次来,的确清爽了很多,代码也就更节省。
 
  真正的栈操作都集成到invoke,return 等指令中。
  
  从函数调用的角度来看,dalvik 与真实系统类似,还是都是基于栈的。 
 
 
 
  另外整个dalvik指令的操作数只有"寄存器"和立即数,所以说其的指令集基于寄存器,这个描述没有问题。
 
  一旦脱离了这个语境,就不合适了。
 
 
  至于dalvik寄存器是映射到物理寄存器还是内存那就是另外一回事了。
 

热点排行