Anonymous 06/09/2019 (Sun) 17:40:24 No.2269 del
Сделать поддержку for не так уж и просто.
У меня это:
for a in iterable {

};
как в питоне, только a является по сути каждым элементом iterable, то есть значение iterable изменится, в отличие от питона. Чтобы реализовать фор, надо потрудиться с адресами, у, ужас. Добавить новые значения в структуру с локальными переменными, мол приравнивание надо делать по указателю.
Получится, если %a := address iterable[index], то когда a := n, надо %a-> := %n, как-то так. Думаю синтаксис *%a := %n лучшу, похоже на сишный. А адреса будут расчитываться в каждой отдельной инструкции. То есть, если есть a->->-> (то куда ссылается куда ссылается куда ссылается a) станет %0 := *%a; %1 := *%0; %2 := *%1
У меня переменные байткода не как в LLVM. В LLVM там адреса и к ним приравниваются значения, а чтение через инструкцию load, а у меня чтение и присваивание происходит с одними и теми же переменными.

Но я реализовал lenof и индексацию:

u8 @0 'a' := 0x21

func(u8,[u32 %0,f32e8 %1]) @1 'main' := {
.0:
%2 := alloca u8[6];
%3 := lenof %2;

Message too long. Click here to view full text.