javascript - Emscripten 将 C++ 编译为 JavaScript 和 Asm.js 的错误结果

标签 javascript c++ emscripten asm.js

对于大学类(class),我必须演示 asm.js。我找到了一个教程 ( http://www.sitepoint.com/understanding-asm-js/ ),这正是我要找的。 所以我创建了给定的 C++-File 并用 Emscripten 编译了它。 结果是一个将近 10000 行的长文件。无处可找到“使用 asm”语句。与手写的 JavaScript 文件相比,它要慢得多。

我正在使用可移植的 Emscripten-SDK-package 并在使用前对其进行了更新。

如何让 Emscripten 生成好的 asm 代码?


更新: 我在没有 Emscipten 的情况下为我的演示找到了一个不同的解决方案: https://gist.github.com/dherman/3d0b4733303eaf4bae5e . 也许有人需要这个。

最佳答案

从我的测试来看,Emscripten 似乎只使用 asm.js,并将 "use asm"; 放入优化级别为 -O1 及以上的生成的 Javascript 中。所以在编译的时候需要将-O1(或者比1更高的级别)传递给编译器:

eemcc source.cpp -O1 -o target.js`

如果您不指定优化级别,或传递 -O0:

eemcc source.cpp -O0 -o target.js`

然后 "use asm"; 不会被放入生成的 Javascript 中。

关于javascript - Emscripten 将 C++ 编译为 JavaScript 和 Asm.js 的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316456/

相关文章:

c++ - 创建文件会中断 Makefile for C++ 中的 -DDEBUG 标志

javascript - 在滚动上添加和删除类

javascript - 调用数字字面量的成员函数

c++ - 结构的通用比较运算符

c++ - 为什么编译代码 "foo::foo::foo::foob"?

gcc - 如何在 Emscripten 中设置 gcc 标志

node.js - 试图让Emscripten在 Electron 中工作

c++ - Clang 发出有关不受支持的 __declspec 属性的警告

javascript - 将 json 加载到变量中的一个衬垫

javascript - 通过 ASP :LinkButton CommandArgument to __doPostBack __EVENTARGUMENT