cheerp 編譯器之通用計算模塊ccm1

cheerp 通用計算模塊(ccm1) 是基於cheerp 編譯器發射出平臺格式無關的wasm中間代碼,在不同宿主之內運行的一種模塊化方式。

0x1. 不同宿主的相同代碼實現

ccm1 的一般宿主是c++實現,不同平臺編譯引用就可以,目前已知在 nginx,redis, wrk, node 和瀏覽器等宿主軟件上性能優越。 一套cheerp標準生產的wasm 中間代碼可以運行在任何平臺。

0x2. nginx 相關例子

對應編譯內容

0x3. javascript 相關例子

對應編譯內容

0x4. 總結

入手的陡峭程度大概比java略低,需要使用c語法實現模塊內容,寫出來的代碼是經過AOT的所以性能好一些,裏面設計了一些不太常見的思路, 比如 獲取參數用get_local ,而不是參數名,讓人感到新奇。

至於爲什麼要使用get_local , 我猜想是因爲是寄存器數量限制,在某些基於寄存器實現的宿主上在參數列表內容超過8個會出錯誤,而這裏這樣用,我猜測是用了堆棧的方式壓入參數。


【1】cheerp 編譯器開源地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章