[英]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.