簡體   English   中英

了解Emscripten / ASM.js和瀏覽器沙箱

[英]Understanding Emscripten/ASM.js and the browser sandbox

很抱歉這里的基本問題。 我試圖把頭放在Emscripten,ASM.js周圍,並將底層語言編譯為javascript。

這是我不明白的。 您可以在本機C程序中做(但不應該)在基於瀏覽器的js中做的事情。 例如,在本機應用程序中,您可以訪問或文件系統或關閉計算機。

假設我編寫了一個C程序,該程序讀取/ etc / passwd,然后關閉計算機。 然后,我將該程序編譯為js,然后將其彈出到<script>標記中。 當我訪問帶有<script>標記的頁面時會發生什么? 顯然,它不會關閉計算機,但它甚至可以編譯嗎?

在我看來,與低級語言相比,在瀏覽器中運行的javascript是如此有限,以至於我看不到如何在不完全破壞js的情況下將任何有意義的應用程序簡單地編譯為js。

檢查Emscripten文檔 例如,它說:

使用Emscripten編譯的應用程序通常需要同步I / O,因此Emscripten本身為文件系統提供了完全同步的接口。

但是,由於JavaScript具有事件驅動的特性,因此大多數持久性存儲選項僅提供異步接口。 Emscripten提供了可以通過FS.mount()掛載的多個文件系統,以根據執行上下文幫助處理持久性。

如果向下滾動,您會發現:

記憶庫

這是初始化運行時時安裝在/的默認文件系統。 所有文件嚴格存在於內存中,並且在重新加載頁面時,寫入其中的所有數據都會丟失。

我相信這應該可以回答您的問題。 最終,Emscripten / ASM將嘗試使用基於JavaScript的polyfill來模擬底層細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM