ISSUE: (v1.6.0)调整引用类型的实现
现在无论是否是引用类型,很多指令都会尝试从引用位置取参数,这造成了不必要的开销。 需要考虑一下如何将引用单独抽离,避免对其他普通值造成污染
ref 将作为类型的一部分存在,编译器将根据操作数是否为ref生成对应的指令
考虑先从函数的ref参数开始处理,保留pushr删除popr,取消大多数指令对引用的直接支持,保留set,但移除mov,需要额外添加deref族指令用于从引用中取出值和向引用中传递值:
deref 从引用中取出值
movref 向引用目标设置一个值
例如以下操作
let a = [1,2,3];
let b = a[0];
可以编译为
psh ..
mkarr [bp-0], 3
idarr [bp-0], 0
deref [bp-1], cr
Edited by mr cino