免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: shecx
打印 上一主题 下一主题

如何在C中执行动态生成的代码 [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
21 [报告]
发表于 2012-05-28 22:55 |只看该作者
回复 20# OwnWaterloo


    都有……tcc的话我就满意了……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
22 [报告]
发表于 2012-05-28 23:07 |只看该作者
回复 21# starwing83

对不是"一整坨"的程序,你是不是不能接受?
记得以前也讨论过.out既作为app又作为lib vs .exe作为app + .dll作为lib ……


即使将tcc(且不说它产生的代码质量)作为库(gcc也许可以,即使它不行也可以找到其他C编译器)使用,动态链接真的与管道有什么区别么……
即使是静态链接,不可分割的一整块,它还是需要头文件……
难道要将头文件也嵌入到app里固定死?


本体只是个装饰,其实是零散一堆的软件又不是少数。
gcc就是,git也是,emacs/vim(记得有个text<->binary工具来着)还是。
只接受零散的binary文件,不接受零散的text文件?
gcc(以及许多以各种方式支持不同语言的软件)也有文本的零散的东西。 git里面记得有perl脚本。 emacs/vim就更不用提了。
不也用得尚好……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
23 [报告]
发表于 2012-05-28 23:12 |只看该作者
回复 22# OwnWaterloo


    我自己的项目里面是不会的啦。

觉得不舒服。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
24 [报告]
发表于 2012-05-28 23:20 |只看该作者
本帖最后由 OwnWaterloo 于 2012-05-28 23:20 编辑

回复 23# starwing83

嗯,最终又回到"洁癖" —— 对编程来说这通常应该是褒义词,因为其他某个贴里貌似被理解为贬义词了,你懂的所以提一下,你懂的…… —— 上去了……

而我个人感觉……  要么就vm only,没有native;要么就native only,要么就native+interpreter。
native+byte-code+interpret的语言实现都复杂到想吐……

而且值得么?这byte-code夹在中间不上不下的……

论坛徽章:
0
25 [报告]
发表于 2012-05-28 23:44 |只看该作者
我是在想:既然你能fprintf(fp, "void other() {}"); 为什么不把other直接写在代码里呢?

如果这个所谓的other是从不确定的地方输入进来的,恭喜你,你就是在做编译器,至少也得是个编译器的皮。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
26 [报告]
发表于 2012-05-28 23:47 |只看该作者
回复 24# OwnWaterloo


    native也别带gcc啊,带clang好么亲~

那个,都要解释了,会没有byte-code么?

论坛徽章:
0
27 [报告]
发表于 2012-05-28 23:47 |只看该作者
上 lua 吧 .......

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
28 [报告]
发表于 2012-05-28 23:52 |只看该作者
本帖最后由 OwnWaterloo 于 2012-05-28 23:57 编辑

回复 26# starwing83

前面说的"text<->binary工具"搞错了。 我就说怎么总感觉不对劲……  应该是hex才更准确……
xxd(vim)与hexl(emacs)…… emacs带的utils还不止这一个……

感觉clang不够成熟……

我也想问interpreter与byte-code+vm之间有没有绝对界限…… 如果有,界限又在哪?

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
29 [报告]
发表于 2012-05-29 00:02 |只看该作者
回复 28# OwnWaterloo


    bc+vm是解释器的一种实现方式而已。

另一种(可能的)方式是直接通过遍历parser生成的语法树的形式来进行计算。

ruby就是这样的。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
30 [报告]
发表于 2012-05-29 00:05 |只看该作者
回复 29# starwing83

那我们以前关于是否要有vm在争个啥{:3_188:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP