代码拉取完成,页面将自动刷新
同步操作将从 手持辊斤拷,口喊烫烫烫/JunkLang 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
JunkLang
1.字面值:
1.1 字节
数字使用罗马数字表示,可接受字符有:
O 0
I 1
V 5
X 10
L 50
C 100
表示范围 O ~ CCLV
任何超出范围的字面值均为非法字面值。
对于任何超出字面值的操作,需要拆分为两步或更多步进行才可以正常。
2.符号、标识符、注释和关键字
2.1 标识符
怎么可能会有标识符这种东西(
2.2 操作符
; 赋值
# 复制当前指针指向的值到它的下一个变量(不改变指针)
- 加法
+ 减法
/ 乘法
& 乘方
_ 开方
% 除法
* 求余
~ 取反
] 指针加
[ 指针减
0 指针设置到0
! 如果指针指向值为0则跳转到代码标签
| 无条件跳转到代码标签
? 定义代码标签
, 注释
^ 增加分配内存
v 减少内存分配
< 输出当前指针指向的字节
> 从控制台读取一行数字
( 按照数字输出当前字节
) 从控制台读取一个字节
3.运行时
3.1 运行时构成:
0字节变量空间(可以重分配,需要手动初始化)
一个长度为32bits指针,指向当前操作中的指针。
3.2 内存分配增加与减少
^字节值
将会增加内存分配。
假设现在有2字节长度的内存,执行以下代码后:
,,,,,,,,,,,,,,,,,,,代码开始
^CCLV ,将变量空间增加255长度
^XVI ,将变量空间增加16字节长度
,,,,,,,,,,,,,,,,,,,代码结束
此时内存空间长度为273字节。
v 可以减少内存长度
假设现在已有273字节长度
,,,,,,,,,,,,,,,,,代码开始
vCCLV ,减少255字节内存
vIIXX ,减少2字节内存
,,,,,,,,,,,,,,,,,代码结束
此时变量空间长度为0.
4.变量的访问
假设在一片长度为255的内存空间上,访问第16个字节,将其赋值为17
指针当前位置为0
则书写以下代码:
,,,,,,,,,,,代码开始
]XVI ,移动到第16字节
;XVII ,赋值为17
,,,,,,,,,,,代码结束
如果指针超出内存范围则后果是未定义的。
5.数学运算
对于数学运算-+/%*;&_均是在当前指针指向的对象上运行。
如:
-V
相当于C语言的(i为当前指针指向的变量):
i += 5
特殊运算~
~语法会把任何非0值变为0
会把0值变为1
如果值出现了溢出,则其后果是未定义的。
6.代码标签和跳转
我们可以使用下列方法制作一个死循环:
,,,,,,,,,代码开始
?V ,定义代码标签,这个标签的编号是5
|V ,无条件跳转到5号标签
,,,,,,,,,代码结束
标签编号必须是一个字节值。
每个标签编号仅可使用一次。
条件跳转:
!语法和|相同,不同之处在于!语法只在当前指针值为0时执行。
7.输入和输出
使用>语法进行输入,输入值被保存到当前指针指向的地址。
使用<语法进行输出,输出的值被保存到指针指向的地址。
8.HelloWorld例子
,分配内存
^XI ,十一字节
,初始化指针
0
,赋值出HelloWorld字符串的ASCII码
;LII ,H = 72(ASCII)
]I ,右移指针
;CI ,e
]I
;CVIII ,l
]I
;CVIII ,l
]I
;CXI ,o
]I
;LXXXVII ,W
]I
;CXI ,o
]I
;CXIV ,r
]I
;CVIII ,l
]I
;C ,d
]I
;O ,结尾
,将指针置0,然后向右遍历输出字符串
0
?O
<
!O
vXI ,释放内存
9.粗略估算圆的面积和周长
,分配2字节的内存
^II
,指针置0
0
,输入到当前指针
>
,把这个值复制给另一个变量
#
,把指针移动到第二个变量,并且对其进行计算得到周长
]I
/II ,乘以2
/III ,乘以3(粗略的圆周率)
< ,输出周长
,把指针移动到第一个变量,并且把第二个变量复制给第一个变量
[I
#
]I
&II ,二次方
/II ,乘以3(粗略的圆周率)
<
,释放内存
vII
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。