免费注册 查看新帖 |

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
41 [报告]
发表于 2012-05-29 01:21 |只看该作者
回复 39# OwnWaterloo


    顺便说一下,所谓dyncall也称自己那个汇编写的东西是vm,这个嘛……

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

你说arena?一说接口就明白了。。。

arena_t* a = ...;
void* p0 = arena_acquire(a, size0, ...);
void* p1 = arena_acquire(a, size1, ...);
... 诸多acquire... 最终
arena_clear(a); // 上面分配的内存全部回收

但还就是有人将这称为gc……


回复 41# starwing83

同样,也就是有人认为控制了调用约定就控制了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
43 [报告]
发表于 2012-05-29 01:28 |只看该作者
回复 42# OwnWaterloo


    我当然知道arena是啥……Python源代码里面到处用的……

我是说用native做一个C本身能用的stack,太难了吧?

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

>> 我是说用native做一个C本身能用的stack,太难了吧?

显然不是C本身能用的stack……
obstack(glibc)比arena稍微高级点,可以不整体释放,而是LIFO式的分配释放。
然后弄个全局的obstack(或者TSS的),而(需要操作stack的)函数都是无参数的,直接通过obstack分配/获取/释放。

写下上面的文字发现坏事了……  即使是无参的也可能会消耗C的stack……
难道只能CPS了么………………

论坛徽章:
0
45 [报告]
发表于 2012-05-29 03:02 |只看该作者
本帖最后由 wwwsq 于 2012-05-29 03:02 编辑
starwing83 发表于 2012-05-29 01:04
回复 35# wwwsq



我对clang了解不多啊。

gcc可以把头文件预编译成pch文件,把cpp文件预编译成obj文件。这两者组合起来,不是也只要编译你自己的那些代码就可以了吗?

我不知道ast相比(pch+obj),速度更快体现在哪里?


ps:回头我去研究一下ast,貌似很有趣的样子。clang据说可以生成编译中间产物,提供给ide做代码自动提示、自动完成之类的,指的是这个ast吗?

论坛徽章:
0
46 [报告]
发表于 2012-05-29 10:52 |只看该作者
可能要找 解释性c子集 的解释器了

delphi就有 delphi子集 解释器,我把它进一步改成连界面、事件都可以动态加载执行了:
http://211.162.123.246:443/httpdisk/haitaosoft/?app=delphiscript

论坛徽章:
0
47 [报告]
发表于 2012-05-29 12:55 |只看该作者
wwwsq 发表于 2012-05-29 01:01
gcc貌似也支持预编译了。

http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html

不是一回事。

论坛徽章:
0
48 [报告]
发表于 2012-05-31 15:46 |只看该作者
相信我,宏足够实现这个功能了。

论坛徽章:
0
49 [报告]
发表于 2012-06-03 10:59 |只看该作者
把b.c编译成动态库

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
50 [报告]
发表于 2012-06-03 11:10 |只看该作者
用ch吧,c的解释器,超好用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP