Dalvik的源代碼可在here中找到,虛擬機相關代碼位於名爲vm
的文件夾中。幾乎所有的代碼都是用C++編寫的。但是,互聯網上似乎沒有Dalvik的詳細文檔。Dalvik虛擬機源代碼開發方法
我想在原創的Dalvik上開發一些新功能,例如向遠程服務器線程遷移和線程同步。任何人都可以告訴我,我可以參考什麼文件,我應該在哪裏開始我的項目?
Dalvik的源代碼可在here中找到,虛擬機相關代碼位於名爲vm
的文件夾中。幾乎所有的代碼都是用C++編寫的。但是,互聯網上似乎沒有Dalvik的詳細文檔。Dalvik虛擬機源代碼開發方法
我想在原創的Dalvik上開發一些新功能,例如向遠程服務器線程遷移和線程同步。任何人都可以告訴我,我可以參考什麼文件,我應該在哪裏開始我的項目?
說「源代碼是文檔」有些陳詞濫調,但對於Dalvik而言,它確實存在很多問題。
例如,考慮Thread.cpp(我將使用的鏈接你的github上URL)開幕評論。它不僅詳細描述了線程模型,還討論了被考慮但被拒絕的替代模型以及這樣做的原因。
另一個例子是Exception.cpp,其中討論了插件和不同的方法outs來管理異常。
好奇堆棧是如何佈局的?請參閱interp/Stack.h(完整的ASCII藝術!)。
虛擬機的內部運作以這種方式記錄下來。一些較大的項目,如DEX文件格式和字節碼驗證程序的操作,在dalvik/docs目錄(顯然不是該github存儲庫的一部分)中有自己的獨立文檔。無論如何,從dalvik文檔鏡像here中引用它很方便,因爲這會讓您獲得一些較大文檔的CSS格式。
如果Dalvik使用了一些標準的文檔編碼格式化慣例來使得大件工作變得容易,那將會很不錯。
VM代碼本身在整個過程中都受到很多評論。這也適用於ARM組件。
謝謝@fadden。你是對的。他們的文檔保存在源代碼中。我應該從閱讀你提到的三個cpp文件開始。 – Kiwi
https://source.android.com/tech/dalvik/index.html – BoBTFish
謝謝,@BoBTFish – Kiwi