emcc生成wasm,wast,bc文件的方法
一、Emscripten编译优化分为两个步骤
- 每个源文件编译成目标文件(.bc文件),通过LLVM优化
- 目标文件编译成js文件
二、Js使用库的两种方式
1. 多个bitcode直接变成js
- emcc project.bc libstuff.bc -o final.js
2. 多个bitcode先编译成一个,然后在变成js
- emcc project.bc libstuff.bc -o allproject.bc
- emcc allproject.bc -o final.js
一、Emscripten实现把C/C++文件转成wasm,wast(wasm的可读形式),llvm字节码(bc格式),ll格式(llvm字节码的可读形式)的步骤。
extern.cc文件
extern "C"
{int add(int x, int y) {int a=333;return x + y+ a;}int min(int x, int y) {return x - y;}
}
1.转成wasm命令
emcc extern.cc -o extern.js -s EXPORTED_FUNCTIONS='["_add","_min"]' -O3 -s wasm=1
注意:这里EXPORTED_FUNCTIONS指的是导出的函数,需要和源文件里的函数名是相对应的,-O3是编译优化等级,只有这个等级生成的wasm文件才会很小(几十字节),不加该优化选项,生成的wasm将会有几十KB。生成的时候会临时产生*.asm.js,等生成完后,会自动删掉。
执行完将会生成 extern.js和extern.wasm两个文件。
2.转成wast可读文件
wasm2wat extern.wasm -o extern.wast
3.转成llvm字节码 bc格式(中间格式)
(开源编译器框架llvm字节介绍:http://www.nagain.com/activity/article/4/)
emcc extern.cc -o extern.bc -s EXPORTED_FUNCTIONS='["_add","_min"]' -O3
4.使用llvm-dis把llvm字节码转成可读格式
llvm-dis extern.bc
二、执行方式
1.使用服务器执行
https://blog.csdn.net/TurkeyCock/article/details/83317935
2.使用node执行
(1)编译.js文件
emcc extern.cc -o extern.js -s EXPORTED_FUNCTIONS='["_add","_min"]'
(2)编写test.js
var em_module = require('./extern.js');
console.log("add:"+em_module._add(4,5));
console.log("add:"+em_module._min(5,4));
(3)运行
Node node-test.js
emcc生成wasm,wast,bc文件的方法相关推荐
- php二维码存放json数据_PHP生成及获取JSON文件的方法
本文实例讲述了PHP生成及获取JSON文件的方法.分享给大家供大家参考,具体如下: 首先定义一个数组,然后遍历数据表,把相应的数据放到数组中,最后通过json_encode()转化数组 json_en ...
- linux怎么编译ipa,关于自动编译iOS工程,生成app及ipa文件的方法
关于自动编译iOS工程,生成app及ipa文件的方法1.所需语句(可直接在命令行中执行) xcodebuild -configuration Release 进入所在工程的根目录文件夹,执行上面的语句 ...
- 怎么用python创建文件-如何用Python创建生成xml文档文件的方法
用如何用Python完成创建生成xml文档文件的工作. 需要用到的方法:from xml.dom.minidom import Document,想必大家很熟悉这个操作了,接下来就用python 创建 ...
- 生成内核版本号头文件的方法
前段时间,公司买了很多块不同厂家的intel的板子.有同事编译不了网卡驱动,我过去看了一下,原来是因为内核版本号的头文件(version.h)没有内容,导致没有定义LINUX_VERSION_CODE ...
- quartus生成qdb文件_quartus 生成qxp和vqm文件的方法
详解 Quartus 导出网表文件: .qxp 和 .vqm 当项目过程中,不想给甲方源码时,该如何?我 们可以用网表文件 qxp 或者 vqm 对资源进行保护. 下面讲解这两个文件的具体生成步骤: ...
- 关于keil/MDK生成pat/bin/汇编文件的方法
在配置中找到user 然后在after选项中添加如下指令fromelf --vhx --32x1 --output "@P.pat" "#L" 然后在RUN#1 ...
- 怎么使用 javah 工具生成 C 语言头文件
使用 javah 工具生成 C 语言头文件的方法如下: 确保你的 Java 环境已经安装完毕,并且已经将 JDK 的 bin 目录加入了系统的 PATH 环境变量中. 打开命令提示符或终端窗口,进入到 ...
- idea怎么使用jacoco生成报告_Intellij IDEA解析jacoco结果文件的方法
Intellij IDEA解析jacoco结果文件的方法 JaCoCo经常用来分析代码覆盖率,最方便的当然是在Jenkins中集成,能很定时分析代码覆盖率并查看变化情况.如果需要单独查看某一模块中的覆 ...
- Silverlight中文件的生成操作与其对应的获取方法
文件生成操作: Silverlight里的资源文件(图片.视频.字体.XML.XAML等) 生成操作属性选择不同选项时,文件的生成方式和存储位置会有相应变化,下面说一下几个常用的选项: 1. Page ...
- php读取cookie文件,PHP读取CURL模拟登录时生成Cookie文件的方法,_PHP教程
PHP读取CURL模拟登录时生成Cookie文件的方法, 本文实例讲述了PHP读取CURL模拟登录时生成Cookie文件的方法.分享给大家供大家参考.具体实现方法如下: 在使用PHP中的CURL模拟登 ...
最新文章
- 学习编写Unity计算着色器 Learn to Write Unity Compute Shaders
- vue基础整理-组件
- 高级(复杂)指针的含义
- Linux 基础学习大考核
- 电离辐射防护与辐射源安全基本标准_漳武南靖段A1项目成功举办桥面系 安全防护标准化观摩会...
- 计算机网络(二十四)-路由算法及路由协议
- 常见熟知端口号的记忆技巧
- ARM开发6.3.3 基础实训( 3 ) 两个 LED 显示二位数(静态显示)--LPC21XX
- 备战BAT面试-死磕mysql|mysql 是如何做到存储两千万数据毫无压力的?
- word中没文字地方添加下划线方法
- 诡异大阳飙升动因何在
- 关于topk accuracy
- 潇洒老师分享的小知识:注塑模具“压模”的原因和预防措施
- iPhone iPad 设备型号对应表
- java web打包神器_前端开发人员的桌面应用神器 Electron
- MySql 根据身份证号判断年龄所属省份与性别男女
- CPU使用率过高咋办?看这里
- 无领导小组讨论应对技巧及经典案例
- 电力拖动自动控制系统(一)直流调速系统篇--不可逆系统(1)
- 中国开源项目哪家强?看看阿里,百度,腾讯,360,新浪,网易,小米等都开源了什么
热门文章
- 叒一次算法作业hhhhhhhh
- mac 屏幕录制专家
- Java中模拟评分系统_评分系统.java
- 如何在iPhone上将GIF设置为动态壁纸
- WIFI共享大师无法开启发射功能
- Linux导出Excel图片水印中文乱码解决
- html调用电脑/手机摄像头拍照上传+百度文字识别
- Unable to partial resync with the slave for lack of backlog (Slave request was: 2595405802583).
- xls解密(实战详细教程)
- Python 对象烤地瓜