V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
zhjits
V2EX  ›  JavaScript

有没有 JS 写的 C 语言解释器?

  •  
  •   zhjits · 2015-05-26 20:29:29 +08:00 via Android · 3543 次点击
    这是一个创建于 3470 天前的主题,其中的信息可能已经有所发展或是发生改变。
    可以在网页上直接运行 C 代码(不需要后端编译),并且支持简单的调试功能。
    第 1 条附言  ·  2015-05-27 08:30:58 +08:00
    这里有个简单的支持不完善的 C++ 解释器:https://github.com/felixhao28/JSCPP
    继续找合适的轮子
    第 2 条附言  ·  2015-05-27 13:09:51 +08:00
    我要找的是一个 C 语言版的 http://www.codeskulptor.org/ 类似工具,并不是把已有的 C 语言程序编译了到处跑……
    14 条回复    2015-05-27 13:11:47 +08:00
    Septembers
        1
    Septembers  
       2015-05-26 20:48:52 +08:00
    把C用JavaScript编译成asm.js这样的库似乎没有。。。 CC @TYPCN
    Septembers
        2
    Septembers  
       2015-05-26 20:59:08 +08:00
    see http://bellard.org/jslinux/
    你再移植个GCC/clang吧。。。
    zhjits
        3
    zhjits  
    OP
       2015-05-26 21:01:45 +08:00
    @Septembers 想过了,只是启动太慢实在是……
    zhjits
        4
    zhjits  
    OP
       2015-05-26 21:19:54 +08:00
    @Septembers 试了一下,那东西是带 gcc 的,然而我写了个 hello world 现在编译了二十分钟了一点动静都没有……

    ```
    #include <stdio.h>
    int main(){printf("Hello world!\n"); return 0;}
    ```

    这么写应该没问题吧……我都开始怀疑我代码写错了
    zhjits
        5
    zhjits  
    OP
       2015-05-26 21:21:42 +08:00
    @Septembers 好了二十分钟以后我看到它出东西了

    hda: irq timeout: status=0xd0 {Busy}
    ide: failed opcode was: unknown
    sneezry
        6
    sneezry  
       2015-05-26 21:28:23 +08:00
    @Septembers 终于圆了我想看 rm -rf / 的梦想
    yangff
        7
    yangff  
       2015-05-26 21:41:46 +08:00 via Android
    llvm一个clang咯。
    typcn
        8
    typcn  
       2015-05-27 04:51:41 +08:00
    @Septembers 性能肯定惨不忍睹,不过有一种方法是把 C 作为解释型语言来运行,比如检测到 cout 就输出。
    zhjits
        9
    zhjits  
    OP
       2015-05-27 08:31:29 +08:00
    @typcn 我就是这个意思
    Mutoo
        10
    Mutoo  
       2015-05-27 09:26:29 +08:00
    把 c 编译成 js 的到是有。
    https://github.com/kripken/emscripten
    zhjits
        11
    zhjits  
    OP
       2015-05-27 09:32:15 +08:00
    @Mutoo 看过了……然而还是需要一个后端来编译。我还是希望能在浏览器里面搞定一切 >_<
    quix
        12
    quix  
       2015-05-27 10:33:59 +08:00
    @zhjits 感觉困难... 编译一个 helloworld 简单, 然而要支持 stdio.h 就不简单了
    hooluupog
        13
    hooluupog  
       2015-05-27 11:12:20 +08:00
    google搞的那个pnacl。
    zhjits
        14
    zhjits  
    OP
       2015-05-27 13:11:47 +08:00
    @yangff 把 clang 前端折腾成 llvm bytecode 然后 emscripten?
    @quix 只需要支持最简单的字符输入输出……应该难度不是很大吧。
    @hooluupog 这个有点像 emscripten……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:08 · PVG 07:08 · LAX 15:08 · JFK 18:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.