內容導航:
Java用于數字電視機頂盒研究與實現(2)
①當隨后我們手動調節工作指針Wptr′到Wptr"時,工作棧已由先前的嵌套匯編的函數進入到了要調用的本地方法的C函數,因此先前的函數的局部變量在此時無效,也就是說此時如果用以前實參傳遞過來的本地函數指針調用本地的函數肯定不會成功,因此要把這個函數指針先手動保存起來。
②flag的設置的原因是:本地方法的參數的個數不是固定的,而OS20所提供的用匯編調用函數在回到函數入口點時只彈出Wptr"指向的4個單元的內容,因此多余的參數出棧操作也必須通過調節Wptr手動完成,通過向下移動Wptr查找flag標志,再調節Wptr到Wtpr+2即可正確地回到匯編函數。當本地方法的參數完全手動入棧后就可以手動調節工作區指針Wptr而進入到調用的本地函數,函數返回后的第一件事是保存在寄存器中的函數的返回值到returnvalue,恢復工作區指針Wptr,并將本地方法的返回值類型作為嵌入匯編的函數的返回值,此時就完成了由Java棧到C棧的轉換,并成功調用本地方法。
圖3 Java棧到本地棧的轉換
結論
通過對Sun公司下載的CDC代碼的修改與編寫,對CDC中的加載的類做了一些裁減,并且將線程化的解釋器改為一次性解釋字節碼的單線程解釋器簡化程序,成功地生成了在機頂盒上可以運行簡單的Java程序的虛擬機。
更多相關: AV集成
文章來源:中國有線電視
-
【內容導航】
- 第1頁·Java用于數字電視機頂盒研究與實現(1)
- 第2頁·Java用于數字電視機頂盒研究與實現(2)