最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

huatuo官方技術教程 :關于huatuo可行性的思維實驗

2022-11-29 17:19 作者:游戲開發(fā)RAIN  | 我要投稿

在確定目標,動手實現(xiàn)huatuo前,有一個必須考慮的問題——我們如何確定huatuo的可行性?

il2cpp雖然不是一個極其完整的運行時,但代碼仍高達12w行,復雜度相當高,想要短期內深入了解它的實現(xiàn)是非常困難的。而且除了官方幾個介紹il2cpp的博客外,幾乎找不到其他文檔。 Hybrid mode execution 的實現(xiàn)復雜度也很高,如果不能確信能夠在il2cpp上實現(xiàn)這套機制,貿然投入開發(fā),萬一幾個月后發(fā)現(xiàn)此路不通,或者說開發(fā)完成后,突然發(fā)現(xiàn)有一個嚴重并且無解的系統(tǒng)性的缺陷導致這個方案完全不可用于商業(yè)項目,這會帶來巨大的資源浪費,以及對開發(fā)者產(chǎn)生巨大的信心挫傷。 磨刀不誤砍柴工,在動手前從理論上確信這套方案有極高可行性,是完全必要的。

?

以我們對CLR運行時的認識,要實現(xiàn) hybrid mode execution 機制,至少要解決以下幾個問題:

  • 能夠動態(tài)注冊元數(shù)據(jù),這些動態(tài)注冊的元數(shù)據(jù)必須在運行時中跟AOT元數(shù)據(jù)完全等價。

  • 所有調用動態(tài)加載的assembly中函數(shù)的路徑,都能定向到正確的解釋器實現(xiàn)。包括虛函數(shù)override、delegate回調、反射調用等等

  • 解釋器中的gc,必須能夠與AOT部分的gc統(tǒng)一處理

  • 多線程相關能正常工作。包括且不限于創(chuàng)建Thread、async、volatile、ThreadStatic等等

我們下面一一分析解決這些問題

我們在動手前檢查了多個相關函數(shù),基本沒有問題。雖然不敢確定這一定是可行的,但元數(shù)據(jù)加載是huatuo第一階段的開發(fā)任務,萬一發(fā)現(xiàn)問題,及時中止huatuo開發(fā)損失不大。于是我們認為算是解決了第一個問題。

所有調用動態(tài)加載的assembly中函數(shù)的路徑,都能定向到正確的解釋器實現(xiàn)

我們分析了il2cpp中關于Method元數(shù)據(jù)的管理方式,發(fā)現(xiàn)MethodInfo結構中保存了運行時實際執(zhí)行邏輯的函數(shù)指針。如果我們簡單地設置動態(tài)加載的函數(shù)元數(shù)據(jù)的MethodInfo結構的指針為正確的解釋器函數(shù),能否保證所有流程對該函數(shù)的調用,都能正確定向到解釋器函數(shù)呢?

嚴謹思考后的結論是肯定的。首先AOT部分不可能直接調用動態(tài)加載的dll中的函數(shù)。其次,運行時并沒有其他地方保存了函數(shù)指針。意味著,如果想調用動態(tài)加載的函數(shù),必須獲得MethodInfo中的函數(shù)指針,才能正確執(zhí)行到目標函數(shù)。意味著我們運行過程中所有對該函數(shù)的調用一定會調用到正確的解釋器函數(shù)。

至于我們解決了第二個問題。

總結

我們通過少量的對實際il2cpp代碼的觀察,以及對CLR運行時原理的了解,再配合思維實驗,可以99.9%以上確定,既然il2cpp生成的代碼都能在運行時正確運行,那huatuo解釋模式下執(zhí)行的代碼,也能正確運行。

我們在完成思維實驗的那一刻,難掩內心激動的心情。作為一名物理專業(yè)的IT人,腦海里第一時間浮現(xiàn)出愛因斯坦在思考廣義相對論時的,使用電梯思維實驗得出引力使時空彎曲這一驚人結論。我們不敢比肩這種偉大的科學家,但我們確實在使用類似的思維技巧。可以說,huatuo不是簡單的經(jīng)驗總結,是深刻洞察力與分析能力孕育的結果。


huatuo官方技術教程 :關于huatuo可行性的思維實驗的評論 (共 條)

分享到微博請遵守國家法律
昌乐县| 郴州市| 玉山县| 鹤壁市| 贡嘎县| 崇明县| 湟中县| 长治市| 合山市| 北票市| 拜泉县| 讷河市| 通江县| 江陵县| 韶关市| 玉树县| 桐乡市| 崇义县| 根河市| 乌苏市| 定远县| 庄浪县| 信宜市| 汉中市| 梁平县| 临潭县| 永平县| 沅陵县| 五大连池市| 若羌县| 桓台县| 康保县| 龙口市| 南平市| 周口市| 盐源县| 肥乡县| 福安市| 西充县| 永仁县| 东源县|