cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 6749|回复: 12

[TI-Nspire系列] XPicoC 2.32 基于Lua的Nspire机上C语言解释器

[复制链接]
发表于 2020-6-14 23:15:25 | 显示全部楼层 |阅读模式
计算器程序
程序名称: XPicoC 2.32
平台: TI-Nspire 
系统/软件要求:
版本号:
类型: 其他 
作者: 露露
大小(K): 40
更新日期: 2020-06-14
描述: -
已知缺陷: -
源代码: 闭源
本帖最后由 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 代码并执行。
  我们首先演示一个非常简单的范例,定义一个 Hello World 字符串并输出:
  接下来我们演示指针操作,定义一个变量 b,不利用库函数将变量 a 的字符串拷贝到变量 b,并且输出变量 b 的内容:
  同样也可以利用内置的库函数 strcpy() 来完成这个操作:
  除了在交互模式中执行程序以外,XPicoC 也支持从剪贴板读取一整段的 C 程序来执行。例如下面是实现快速排序的算法,利用到了函数以及递归的特性:
#include <stdio.h>

int array[16];

//Swap integervalues by array indexes
void swap(int a, int b)
{
    int tmp  =array[a];
   array[a] = array;
   array = tmp;
}
//Partition thearray into two halves and return the
//index about whichthe array is partitioned
int partition(int left, int right)
{
    int pivotIndex = left;
    int pivotValue = array[pivotIndex];
    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 thearray
void 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[0]= 62;
   array[1]= 83;
   array[2]= 4;
   array[3]= 89;
   array[4]= 36;
   array[5]= 21;
   array[6]= 74;
   array[7]= 37;
   array[8]= 65;
   array[9]= 33;
   array[10]= 96;
   array[11]= 38;
   array[12]= 53;
   array[13]= 16;
   array[14]= 74;
   array[15]= 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 粘贴程序:
  以上就是 TI-Nspire 平台的 C 解释器 XPicoC 的简单介绍。

视野工作室  www.horizonriver.cn

XPicoC作者:露露


2020年6月14日


14-06-2020 Image001.jpg
14-06-2020 Image002.jpg
14-06-2020 Image003.jpg
14-06-2020 Image005.jpg

Nspire机上C解释器(TI-Lua)_XPicoC_2.32预览版.tns

47.17 KB, 下载次数: 70, 下载积分: 金钱 -1

XPicoC简介.docx

146.39 KB, 下载次数: 33, 下载积分: 金钱 -1

评分

参与人数 3金钱 +18 专家 +3 贡献 +3 收起 理由
晨皓小盆友 + 6 很给力!
lch + 10 + 3 + 3 优质内容
zyf722 + 2 tql

查看全部评分

发表于 2020-6-15 07:31:07 | 显示全部楼层
本帖最后由 zyf722 于 2020-6-15 17:41 编辑

事大佬 支持了
请问有进一步的头文件/函数说明吗?
发表于 2020-6-17 08:27:08 | 显示全部楼层
好东西,赞一个
发表于 2020-6-17 21:32:08 | 显示全部楼层
NB啊!支持大佬。
发表于 2020-6-21 11:31:33 | 显示全部楼层
支持了
发表于 2020-6-30 20:15:47 来自手机 | 显示全部楼层
支持一下,另外希望能开源,毕竟这种东西还是大家共同学习比较好,也没有什么版权hhh
出现parse error之后按下任何键都没反应怎么办?只能重启tns吗?有点麻烦
发表于 2020-6-30 20:19:11 来自手机 | 显示全部楼层
看了一下,太强了,这样子nspire也支持简单的机上c语言了!!恭喜    膜拜大佬
发表于 2021-3-31 01:02:56 | 显示全部楼层
补充一下,XPicoC并非不开源,现补开源地址于此:
https://github.com/ExAcler/XPicoC
发表于 2021-9-29 17:03:26 | 显示全部楼层
真牛啊,太强了。
发表于 2022-12-2 12:50:33 | 显示全部楼层
这个不错的程序还有更新吗?
发表于 2023-5-12 12:57:21 | 显示全部楼层
青婉娘 发表于 2022-12-2 12:50
这个不错的程序还有更新吗?

当初开发这个玩意的初衷是一个proof of concept。
至于如何更新,有什么样的功能方面的idea,我觉得还是交给感兴趣的各路大神吧(
发表于 2023-6-20 00:52:48 | 显示全部楼层
ExAcler 发表于 2023-5-12 12:57
当初开发这个玩意的初衷是一个proof of concept。
至于如何更新,有什么样的功能方面的idea,我觉得还是 ...

可否添加个联系方式?我试着自己开发下
发表于 2023-6-23 10:30:41 | 显示全部楼层
本帖最后由 ExAcler 于 2023-6-23 10:35 编辑
青婉娘 发表于 2023-6-20 00:52
可否添加个联系方式?我试着自己开发下

本身就是开源的,诚挚欢迎进行二次开发。
https://github.com/ExAcler/XPicoC
您可以加我QQ: 496937921,不过最近估计不怎么有空。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-3-29 16:04 , Processed in 0.056475 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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