明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1206|回复: 2

[运行时] cad.net 继续推进我们荒废的Lisp解释器

[复制链接]
发表于 2025-7-9 16:35:14 | 显示全部楼层 |阅读模式
本帖最后由 你有种再说一遍 于 2025-7-10 01:16 编辑

之前只是思考了它的词法分析和语法分析,
LispCode to LispAST to CSharpAST to CSharpCode.
到写代码的时候才发现直接处理object/dynamic是不行的,
虽然可以编译,但是装箱拆箱这种问题严重拉低性能.

还是要做类型标记,如果无法区分类型就需要遍历类型...
而且我发现我是疯了才直接用Roslyn,那一坨代码跟屎似的.
现在我用上了SIMD编译,还差多核并行没有写,嘻嘻...

每个Lisp基础函数需要自己写一份C#函数,
这个工作量还是不小的,我甚至觉得应该放弃了...
虽然可以直接放到Lisp.Run执行,但是这样就没法优化和特化了.
真是纠结万分,甚至桌子有些隐藏函数...
我甚至没有这个函数表,靠帮助文档复刻感觉很奇怪...
还是考虑低程度兼容,你公开的我兼容,你不公开的我否决...

今天深入一点:
变量重名,
全局变量和局部变量处理方式是不同的.
唉?到底同不同呢?
栈帧自动捕获局部变量,实际上是自动捕获全局变量.

以及各种优化方式,
俗话说得好,没有FFI的语言是残废.
最重要当然是打通调用Win32API的通道,
难题是动态生成结构体.

https://www.cnblogs.com/JJBox/p/18973404

为什么这种东西是我做啊,
难道不是大朋,猫老师,高飞鸟他们的做吗?
难道国产CAD它们不应该做吗?主打一个差异化竞争啊.

而且做完之后貌似可以弄个编译裁剪,
裁剪掉CAD函数,就可以创建exe啦,
而且C#有AOT编译,这个exe还直接上高速.

嘻嘻
回复

使用道具 举报

 楼主| 发表于 2025-7-9 19:52:24 | 显示全部楼层
好想写完这个东西哦,感觉挑战性又强,
又可以深入了解编译原理.
例如一些偷懒操作,反射导出全部cad.net函数表,让用户自举.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-11-16 04:03 , Processed in 0.188843 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表