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.