「伪语言/更新贴/发布贴」Alka语言, 专注高效的语言
scratch吧
全部回复
仅看楼主
level 11
[滑稽]和eden唠了一会, 觉着吧, 这饭碗得抢, 不然就eden一个在那边更新多无聊啊是吧 (和(核)善的笑容~~
Logo
镇楼
, 一楼喂熊
2019年01月15日 03点01分 1
level 11
二楼备用
2019年01月15日 03点01分 2
level 11
2019年01月15日 03点01分 4
level 11
[滑稽]eden是解释型语言, 那么, 饭碗得抢, 咱做编译型语言, 原理实际也很简单, 把源程序翻译成汇编码, 然后将汇编码转换为机器码并链接程序, 由于scratch中文本处理和数字处理效率上区别不大, 所以咱直接跳过机器码部分, 直接解释汇编码, 所以Alka语言实际上由两门语言组成: Alka语言和Alka汇编, 我们将Alka源程序解释成Alka汇编以后执行, 由于汇编指令由指令, 操作码组成, 所以在运行上会比直接解释源程序快一点, 实现也相对简单.
2019年01月15日 03点01分 5
mmm...做个C++版的如何
2019年01月15日 04点01分
level 11
然后说一下本程序基于Scratch 3.0!!!!!
请不要试图使用Scratch 2.0, Clip CC, Steve Scratch, Zilch Editor([滑稽]你怎么冒出来了, 下去), Scratch 1.4, MBlock等编辑器打开!!!!!
本项目基于GNU Lesser General Public License v3协议(LGPLv3)开源并发布, 你可以免费获取本程序的源代码, 你可以在你的项目中使用, 你可以对本项目再开发, 但必须以LGPLv3开源修改后的程序.
2019年01月15日 03点01分 6
level 11
目前还在对汇编执行部分(虚拟机/VM)进行编写
2019年01月15日 03点01分 7
level 11
程序从上至下依次执行, 由寄存器IP(名字取自IP/EIP/RIP)决定运行的行, 并对该行按照指令, 操作数1, 操作数2, ..., 操作数n进行解析, 指令和操作数相隔一个空格, 两个操作数之间间隔一个逗号, 格式严格, 不得有多余的空格
下一层说一下目前的为(少)数(的)不(可)多(怜)的指令
2019年01月15日 03点01分 8
level 11
指令wrts i0(我准备改成pushi): 向内存(当然是伪的)压入立即值i0
指令prtm m0: 输出内存中地址为m0的值
指令movrm r0,m0: 将地址m0的值传入寄存器r0
指令movri r0,i0: 将立即值i0传入寄存器r0
指令movrr r0,r1: 将寄存器r1的值传入寄存器r0
以冒号开头定义一个标签, 给以后jmp指令用
2019年01月15日 03点01分 9
level 7
牛逼
2019年01月15日 04点01分 10
level 8
讲道理真的有必要在运行时里面把指令和参数用**substring**来解析吗[喷]
就算是c++之类的真汇编编译型语言字符串的效率也低的一笔
然后还要alka asm -> scratch vm -> v8/spidermonkey/jscore -> (有时会有的汇编转换) -> cpu流水线[阴险]
另外发布在scratch官网上的作品好像都是默认CC by NC的[滑稽]
2019年01月15日 07点01分 11
[滑稽]SC处理字节码效率也就那样
2019年01月15日 09点01分
@鸣濑白羽◎ 由于sc处理这些东西本来效率就差 个人给字符串处理、数据结构(数组)、参数之类加上自己的指令
2019年01月16日 01点01分
@hnOsmium01 栈这边在重写,下个更新你再看下吧,你说的我都会考虑的
2019年01月17日 11点01分
level 8
另外反正都是在js的堆里的了,寄存器/cache就没有什么必要了[阴险]
2019年01月15日 07点01分 12
实现方便而已....主要是ip和ax处理行和返回值的问题
2019年01月15日 09点01分
@鸣濑白羽◎ 那直接实现一个基于栈的岂不美哉[滑稽]有主流字节码看起来又漂亮 当然只是个人建议而已
2019年01月15日 23点01分
level 11
围观[滑稽]
你做编译,我做解释,互不抢饭碗
2019年01月15日 13点01分 13
楚河[滑稽]汉界
2019年01月17日 12点01分
1