DFX184 / HeAssembly

HeAssembly——赛博语言,但是汇编

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HeAssembly:编译后的何语言

Stars Issues MIT License CI Status CodeFactor HitCount

耗费 10 秒甚至 9 秒想出来的 Typescript 何语言汇编,理塘丁真全程监工。

此处删去英文注释是因为 我不想看到英文注释(来自 Github Copilot 的看法) 怎么能让老鹰国的网友看懂呢 😡😡😡

Helang 演示视频见此:https://www.bilibili.com/video/BV1XW4y1h79A/

这是初生二创

本项目包含于 Cyber Spaces Collection

本家位于 Cyber Spaces CollectionHelang

介绍

青,出于蓝而胜于蓝;冰,来自水而寒于水。

Windows 11 on ARM Update(5G+4G LTE),2077 年。

“次世代赛博编程语言”Helang 诞生于E-SMOKER之乡:赛博理塘。而本次的项目虽并未诞生于理塘,但理塘丁真本人全程监工,故可以算作 Helang 的精神续作(实际上比Helang低级,HeAssembly Helang前身说)。

本项目是由自己会打字的 5G 键盘,花了 121 赛博分钟,在 AirDesk 上配合 AirPods 编写的。

实在是太酷了,很符合我对未来生活的想象,科技并带着趣味。

注:如果以普通时间单位(Basic Unit of Plain Time, BUPT)作为标准单位,本项目开发时长为1! + 5! = 121 分钟。

注 2:BUPT 在赛博世界还可以代指北邮(声明:我对本学府无恶意,我认为这是一所优秀的学校,我只是对某个人)。

使用方法

  1. 把源代码拉下来:

    > git clone git@github.com:FurryR/HeAssembly.git

若系统提示你找不到 git,则建议你使用360 安全浏览器重新尝试,若仍无法成功则请放弃。

  1. 下载需要的第三方库:

    > npm install

若系统提示你找不到 npx,则建议你使用2345 浏览器重新尝试,若仍无法成功则请放弃。

  1. 不同于Helang 只能运行 great.he,我们允许你一次编写,到处运行,你可以额外指定一个文件名来运行:

    > npx ts-node src/cli.ts 藏话.helang

若系统提示你找不到 npx 或 ts-node,则建议你使用QQ 浏览器重新尝试,若仍无法成功则请放弃。

不仅如此,我们还不限制脚本的后缀名,你可以把 Helang 写在.py.js.ts.cpp等后缀名的文件里,实现真正的H++HescriptHypeScriptHython

注:如果你是大脑升级人,则不需要使用来自Microsoft的愚蠢技术。你可以使用最新的5G技术来人脑直接运行 HeLang 脚本。

请注意:此行为十分适合 OI 人,特别是参加过FJOI 2022的泉州七中选手。但普通人若稍有不慎脑内运算错误,则可能导致大脑降级。

基本语法

Saint He 曾说,一切类型均为u8,是什么意思呢?这个词倒过来就是8u,看来圣人也喜欢玩贴吧。

因为一切类型均为u8,所以在 HeAssembly 中,不需要指定类型即可使用变量。

除此之外,u8v8 形似,所以能不能关注永雏塔菲喵,关注永雏塔菲谢谢喵。

在 HeAssembly 中,我们甚至不需要使用bitwise or,就可以使用数组。都什么年代了还在写按位与

set [0] 1
set [1] 5

Saint He 曾说:whichKey - 1 ,所以我们数组的下标需要从 1 开始,但 HeAssembly 采用了极为先进的数组扩展技术,所以下标也可以从 0 开始。

set [1] 5
#set [0] 1也是可以的
call print [1]

HeAssembly 虽然不支持多下标操作,但允许你 reset 全局数组。通过空格分割,你可以直接重置全局作用域,实在是领先了人类 10 万年甚至 9 万年的设计。

set [1] 1
reset [1] 5
#此时[0]为1,[1]为5。

HeAssembly 相比 HeLang,支持了 if 语句和 while 语句,但是我没做嵌套,我也不想做嵌套。优秀的代码不应该嵌套 while 和 if!

# 我测你们码
reset 1 25105 27979 20320 20204 30721 10
call cmp != [[0]] 0
while [ret]
  call putchar [[0]]
  call add [0] 1
  set [0] [ret]
  call cmp != [[0]] 0
done
# [0] = 0
call cmp == [0] 6
if [ret]
  # 结束程序
  jmp 20
fi
call cmp != [0] 6
if [ret]
  # 5G测试
  call 5gtest
fi

还有数个 call 调用等你探索,你可以使用call命令进行 5G 测速,也可以进行加减乘除操作,或者输入输出之类的。

注意:HarmonyOS+4G>5G,但是HarmonyOS+4G 不等于 5G,所以你不能用 4G 华为手机及其共享的热点进行 5G 测速。

HeAssembly 还支持根据变量中的内容作为索引获取变量,非常的实用,非常的先进。

set [0] 1
set [1] 4
# [1]居然不是5!那么我们利用[0]给它加到5。
# 调用极为先进的加法 syscall,算出结果=5。
call add [[0]] 1
# 将[0]中的内容"1"作为索引,得到[1],并将其的值变更为[ret](call的返回值)。
set [[0]] [ret]

最后,我们结合一下,可以写出下列代码。

reset 1 1 1 4 5 1 4 1 9 1 9 8 1 0 -1
call cmp != [[0]] -1
while [ret]
  call print [[0]]
  call add [0] 1
  set [0] [ret]
  call cmp != [[0]] -1
done

如此精妙的代码,在地球的人类是无法理解的。我们作为赛博智能生命体,也只能给你演示一下日常操作了。

这实在是太酷了,后面我忘了,我也不想翻到文章开头去看。

Hello, world!

HeAssembly 也同样受到了对于 Hello World 的挑战。

Saint He 专注于单片机应用的开发,哪里有时间顾及字符串?

好在,经过协商,他同意了这个请求,使得我们能在这门语言中打印出Hello, world!

reset 1 72 101 108 108 111 44 32 119 111 114 108 100 33
call cmp != [[0]] 0
while [ret]
  call putchar [[0]]
  call add [0] 1
  set [0] [ret]
  call cmp != [[0]] 0
done

由于对效率的极端苛刻要求,我们使用字符在 ASCII/Unicode 中对应的数字来表示这个字符。

HeAssembly 不使用突兀的bitwise or来分割 ASCII 码,在保持可读性的同时提高了效率,实乃赛博世界中的神中神。

运算

我们注意到,Saint He 的代码中还出现了自增运算:++

因为 HeAssembly 不存在引用,我们被迫使用 call 的方式进行计算。

通常,计算(add sub mul div mod)需要 2 个参数。第一个参数作为左边的操作数,第二个参数作为右边的操作数。

set [0] 1
# 1!
call print [0]
call mul [0] 5
set [1] [ret]
# 5!
call print [1]

变量声明与赋值

不同于 HeLang,HeAssembly 更贴近 Saint He 倡导的贴近硬件

HeAssembly 允许你直接对内存池进行操作,变量也可以不定义就进行使用(是绝对安全的,默认值为 0)。

# 在这之前,[0]=0
set [0] 1
# 修改已存在的变量
set [0] 2

查看你是否在 Cyber Spaces

为了见到 Saint He,你需要身处 Cyber Spaces

由于cyberspaces需要调用外部 API,所以我们把它转化为了call

call cyberspaces

5G 测速

理论上这块也属于语法,但我就是要把它单独摘出来。

很简单,只需要输入:

call 5gtest

即可开始 5G 测速。

注意:HarmonyOS+4G>5G,但是HarmonyOS+4G 不等于 5G,所以你不能用 4G 华为手机及其共享的热点进行 5G 测速。

人性化滴捏

在用户kifuan锐评cmp是前缀表达式后,我们加入了cmp2调用来支持中缀表达式。

set [0] 1
set [1] 1
# 这不人性化!
call cmp == [0] [1]
# 这太人性化了!
call cmp2 [0] == [1]

总结

关注永雏塔菲喵,关注永雏塔菲谢谢喵。

关注猫雷 NyaRu_Official谢谢喵,要吃**的大米喵。

关注星瞳_Official送溜溜梅!

关注嘉然,顿顿解馋!

关注向晚,关注向晚,为时不晚!

关注乃琳,关注乃琳嘎,关注乃琳谢谢嘎!

关注贝拉,关注贝拉哞,关注贝拉谢谢哞!

举办東雪蓮 Official谢谢喵,不能让立本 V 吃**的大米喵。

举办DJGun谢谢喵,不能让初生祸害我们冲国人喵。

关注粘连科技 Official,薄纱何同学喵 🥰

关注HiiroVTuber,不是 425KG 的粉色喵!

关注露早 GOGO!关注露早汪,关注露早谢谢汪!

关注AIChannel **绊爱!超级可爱的 Super AI 薄纱赛博丁真!

关注有栖 Mana_Official,谢谢喵。

关注洛天依,比赛博丁真更像人的 V 家歌姬!

关注传统丁真,什么年代了还在关注赛博丁真,不如来怀古!

关注凑阿夸rinco 小姐!傻气溢出的海洋(屑)女仆(洋葱)和喜欢水濑祈的可爱唱见 期待木口回旋捏 另外请支持阿夸主演的galgame谢谢!

关注原神,玩《原神》比看赛博丁真好多了!

附加

现在是晚上七点,我逐渐理解了这个世界。

About

HeAssembly——赛博语言,但是汇编

License:MIT License


Languages

Language:TypeScript 100.0%