XPicoC 2.32 基于Lua的Nspire机上C语言解释器
本帖最后由 imath 于 2020-6-14 23:30 编辑如果有使用过 TI-Nspire 系列计算器的各位应该知道,要实现 TI-Nspire 计算器使用 C 语言来开发程序,必须通过类似 iOS 越狱的方法实现,例如通过安装 Ndless。在安装 Ndless 之后,不仅可以实现电脑上编译 C 程序在 TI-Nspire 计算器上执行,也可以实现直接在 TI-Nspire 机上编写及执行 C 程序,例如利用一款名为 dPicoC 的实用工具。但是,德州仪器官方对于此类越狱的行为始终是零容忍的态度,从 Ndless 发布伊始,就开始通过不断发布系统更新以及阻止降级的方式来封杀 Ndless。自从 2018 年底发布的 TI-Nspire CX II 计算器上搭载的 OS 5.0,以及 2019 年 3 月发布的 OS 4.5.1 开始,Ndless 社区就始终未能攻破德州仪器对 Ndless 的封杀至今。 因此我们需要在德州仪器官方允许在 TI-Nspire 计算器上使用的编程语言,也就是 TI-Lua 上寻找一定的突破。本文介绍的项目 XPicoC,是我们于 2020 年 5 月初利用 20 多天的时间,将一款轻量级、基于 C 语言的 C 解释器 PicoC,跨语言移植至 Lua 脚本语言的成果。 与其他任何在 TI-Nspire 计算器上执行 C 程序的方法不同,XPicoC 是纯粹建构于 Lua 脚本语言之上,不依赖任何其他 C 等等目标代码语言。因此同样可以在任何支持 TI-Lua 脚本语言的 TI-Nspire 系列计算器上执行,不需要任何安装 Ndless 等越狱操作。 XPicoC 并不是一个部分实现 C 标准的“玩具”语言。它几乎实现了所有最核心的 C 标准定义的内容,包括在 Lua 本身并不支持指针的情况下,成功实现了 C 最核心的特性——指针操作。 接下来我们来介绍 XPicoC 的核心特性。 启动包含 XPicoC 的 tns 文档,即可看到计算器的页面变为了一个命令提示符,此为 XPicoC 的交互模式,可以在此直接输入 C 代码并执行。https://pic1.zhimg.com/80/v2-6e6e802831beed7946a43b4b24d24308_720w.jpg 我们首先演示一个非常简单的范例,定义一个 Hello World 字符串并输出:https://pic1.zhimg.com/80/v2-c154f26d1220a500964a5ea2b7a2c6fc_720w.jpg 接下来我们演示指针操作,定义一个变量 b,不利用库函数将变量 a 的字符串拷贝到变量 b,并且输出变量 b 的内容:https://pic2.zhimg.com/80/v2-a2b0bd99cf21752e0fd9316ea875b255_720w.jpg 同样也可以利用内置的库函数 strcpy() 来完成这个操作:https://pic3.zhimg.com/80/v2-0b575b63761e009a4494d1f2b3659e66_720w.jpg 除了在交互模式中执行程序以外,XPicoC 也支持从剪贴板读取一整段的 C 程序来执行。例如下面是实现快速排序的算法,利用到了函数以及递归的特性:#include <stdio.h>
int array;
//Swap integervalues by array indexesvoid swap(int a, int b){ int tmp=array; array = array; array = tmp;}//Partition thearray into two halves and return the//index about whichthe array is partitionedint partition(int left, int right){ int pivotIndex = left; int pivotValue = array; int index = left; int i; swap(pivotIndex, right); for(i= left; i < right; i++) { if(array < pivotValue) { swap(i, index); index += 1; } } swap(right, index); returnindex;}//Quicksort thearrayvoid quicksort(int left, int right){ if(left>= right) return; int index = partition(left, right); quicksort(left, index - 1); quicksort(index + 1, right);}void main(){ int i; array= 62; array= 83; array= 4; array= 89; array= 36; array= 21; array= 74; array= 37; array= 65; array= 33; array= 96; array= 38; array= 53; array= 16; array= 74; array= 55; for(i = 0;i < 16;i++) printf("%d ", array); printf("\n"); quicksort(0, 15); for(i = 0;i < 16;i++) printf("%d ", array); printf("\n");}
在计算器上新建一个“记事本”应用程序,将这段程序复制到“记事本”应用程序当中。然后我们按 Ctrl+A 全选代码,按 Ctrl+C 复制代码然后回到 1.1 页的 XPicoC 中,按 Ctrl+V 粘贴程序:https://pic2.zhimg.com/80/v2-8f9c0d539efbc024fc511dac249f1c21_720w.jpghttps://pic2.zhimg.com/80/v2-ad57e9c72b05b76f07fb65129a89d519_720w.jpg 以上就是 TI-Nspire 平台的 C 解释器 XPicoC 的简单介绍。
视野工作室www.horizonriver.cn
XPicoC作者:露露
E-mail:[email protected]
2020年6月14日
本帖最后由 zyf722 于 2020-6-15 17:41 编辑
事大佬 支持了
请问有进一步的头文件/函数说明吗?
好东西,赞一个 NB啊!支持大佬。
支持了
支持一下,另外希望能开源,毕竟这种东西还是大家共同学习比较好,也没有什么版权hhh
出现parse error之后按下任何键都没反应怎么办?只能重启tns吗?有点麻烦 看了一下,太强了,这样子nspire也支持简单的机上c语言了!!恭喜 膜拜大佬 补充一下,XPicoC并非不开源,现补开源地址于此:
https://github.com/ExAcler/XPicoC 真牛啊,太强了。 这个不错的程序还有更新吗? 青婉娘 发表于 2022-12-2 12:50
这个不错的程序还有更新吗?
当初开发这个玩意的初衷是一个proof of concept。
至于如何更新,有什么样的功能方面的idea,我觉得还是交给感兴趣的各路大神吧( ExAcler 发表于 2023-5-12 12:57
当初开发这个玩意的初衷是一个proof of concept。
至于如何更新,有什么样的功能方面的idea,我觉得还是 ...
可否添加个联系方式?我试着自己开发下 本帖最后由 ExAcler 于 2023-6-23 10:35 编辑
青婉娘 发表于 2023-6-20 00:52
可否添加个联系方式?我试着自己开发下
本身就是开源的,诚挚欢迎进行二次开发。
https://github.com/ExAcler/XPicoC
您可以加我QQ: 496937921,不过最近估计不怎么有空。。
页:
[1]