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