Picoc C语言解释器
Picoc是google开源代码项目中看到的一个项目,其初衷貌似是要做一个在小的嵌入设备上的C解释器。它的核心代码只有3500行左右,可读性不错,虽然没有实现完整的ISO C标准,基本的C运行库还是具备了。
picoc代码上看,基本有如下几块:lex词法解析,table一个基本数据结构(用于存放变量),是个字符串hash表,heap管理内存分配(包括了stack frame的实现), type做类型管理(基本型别和程序自定义的struct,typedef等),expression做表达式解析,variable变量管理分配释放栈帧。
picoc的定位是一个解释器,它的解析和代码运行是在同一块代码块里做
PicoC是一个非常小的C解释器的脚本。它最初是作为一个无人机的飞行系统板上的脚本语言。它也非常适合于其他机器人,嵌入式和非嵌入式应用。
核心的C源代码是大约4500行代码。它并不打算成为一个完整的ISO C实现的,但它拥有所有的必需品。在编译时,只需要几K的代码空间也很不遗余力的数据空间。这意味着,在小型嵌入式设备,它可以很好地工作。这也是一个有趣的例子,如何创建一个非常小的语言实现,同时仍保持代码的可读性。
picoc已经过测试的x86-32,x86-64的的PowerPC,ARM,以UltraSPARC,HP-PA和Blackfin处理器上,并很容易地移植到新的目标。
项目地址,有文档和源码:
GOOGLE https://code.google.com/p/picoc/
GitHubhttps://github.com/larryhe/tiny-c-interpreter
SVN 地址,貌似还有人在开发当中,但是只有 win32版本可以编译过去,变化比较大...
# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://picoc.googlecode.com/svn/trunk/ picoc-read-only
估计学生及编程爱好者比较喜欢这个。整天忙于项目的,不敢轻易尝试这玩意儿了。 tongdayusu 发表于 2017-8-17 14:15
估计学生及编程爱好者比较喜欢这个。整天忙于项目的,不敢轻易尝试这玩意儿了。 ...
google 的代码还不可信? ljt80158015 发表于 2017-8-17 14:30
google 的代码还不可信?
显然不是 google的,不过代码也有不少人用,主要是性能不是非常好,不过脚本嘛,也就图灵活啦。
你这个代码也太旧了。
https://github.com/zsaleeba/picoc
https://github.com/jpoirier/picoc yj_yulin 发表于 2017-8-17 14:53
显然不是 google的,不过代码也有不少人用,主要是性能不是非常好,不过脚本嘛,也就图灵活啦。
你这个代 ...
https://github.com/zsaleeba/picoc
https://github.com/jpoirier/picoc
这两个有什么区别?新版本我试了下和 老的没什么区别 记号 记号 yj_yulin 发表于 2017-8-17 14:53
显然不是 google的,不过代码也有不少人用,主要是性能不是非常好,不过脚本嘛,也就图灵活啦。
你这个代 ...
如何防止脚本中有while(1)中没有sleep,导致cpu 100%?
在脚本中处理肯定不合适,毕竟脚本很多人写。
ljt80158015 发表于 2017-8-18 14:23
如何防止脚本中有while(1)中没有sleep,导致cpu 100%?
rtos中可以把解释器任务定时开一段时间,时间到暂停此任务 yj_yulin 发表于 2017-8-18 16:50
rtos中可以把解释器任务定时开一段时间,时间到暂停此任务
ucos是通过sleep让出时间片的
你必须在 picoc中 添加sleep 才能做到。关键这个sleep 添加在哪呢?
本帖最后由 yj_yulin 于 2017-8-18 21:38 编辑
ljt80158015 发表于 2017-8-18 16:52
ucos是通过sleep让出时间片的
你必须在 picoc中 添加sleep 才能做到。关键这个sleep 添加在哪呢?
task 可以pause,resume啊,跟picoc没什么关系,它死循环没有什么关系呢 实际编译了用过吗?嵌入式平台或PC平台 看有没移植好的 这个看起来比脚本好玩 怎么玩?感兴趣 huangqi412 发表于 2017-8-19 12:15
看有没移植好的
独乐乐不如众乐乐,Picoc C语言解释器的STM32平台移植。
https://www.amobbs.com/thread-5525685-1-1.html
(出处: amoBBS 阿莫电子论坛)
Excellence 发表于 2017-8-19 16:34
怎么玩?感兴趣
linux下直接编译运行,非常棒,但是效率很低,只有编译程序的速度是 解释方式运行速度的280 倍
但是实现简单的应用问题不大
zack_cf 发表于 2017-8-19 09:53
实际编译了用过吗?嵌入式平台或PC平台
linux 平台可以直接编译 运行
mark一下,嵌入式 C 解释器,感谢LZ的分享!{:handshake:} ljt80158015 发表于 2017-8-20 09:45
linux下直接编译运行,非常棒,但是效率很低,只有编译程序的速度是 解释方式运行速度的280 倍
效率的差距是原理上决定的,编译型和解析型语言的速度也是差很远的,基本无解,但作为应用是没有速度瓶颈的
解析型语言如BASIC、Python这些,还是照样很受欢迎的,简单嘛,搞个解析器和编辑器就可以编程玩了,编译型的还要搞译码啥的
GitHub上也有一些其他语言的解析器,基本是其他开发者写着玩的,多半不考虑用在产品上,所以,用来学习还是很好的,但产品还是要自己再梳理
页:
[1]