[02:16:48] <vlad3> Да, я думаю надо просто запретить / для целочисленных. Оставить только DIV.
[02:18:37] <valexey_> vlad2: ты только этта.. для констант там не позапрещай все на свете :-)
[02:19:11] <valexey_> вообще, надо проверять размер все же. а то я же там могу написать ARRAY 10-15 OF INTEGER
[02:19:34] <valexey_> то есть по сути нужно проверять ТИП длины и значение вычисленное
[07:59:56] <Kemet> V
[08:50:35] <vlad3> значение проверяется на > 0
[08:54:44] <vlad3> Вообще очень странно, что жабаскрипт ругается на дробное число, не в его духе. Он обычно просто молча глючит.
[09:53:59] <vlad3> Фикснул DIV.
[11:18:13] <Kemet> var JS = function(){return this;}();
var test = function (){
JS.alert("Hello, World!");
}();
[11:18:29] <Kemet> страшный жабоскрипт
[14:44:30] <Kemet> .
[14:45:17] <Kemet> test
[14:45:18] <Жаба> Kemet, passed
[14:49:28] <valexey_> Kemet: таки ты можешь объяснить почему новый порядок выбор регистров круче старого?
[14:51:08] <Kemet> он не лучше, просто в таком порядке не выполняется условие ассерта
[14:52:10] <valexey_> Насколько я понимаю, ассерт ведь был из за того, что x.reg = 6, что больше 4?
[14:53:08] <Kemet> гя так думаю, теперь шестой регистр выделяется позже
[14:53:19] <valexey_> и maliya по сути засунул шестерку глубже в потроха.
[14:53:26] <valexey_> равно как и семерку
[14:54:12] <Kemet> угу, где-то есть ошибка реаспределения регистров или освобождения
[14:54:22] <valexey_> но это ведь может просто маскировать баг. то есть если у меня будет еще сложнее выражение, баг снова вылезет
[14:56:12] <valexey_> А еще я не понимаю почему они перебираются не линейно. Т.е. почему 2,1,3,6,7 а не 1,2,3,6,7
[15:00:52] <Kemet> хз, надо кот рыть, я бб \\\\\\
[15:02:26] <Kemet> ты ж видел ассерт
ASSERT((x.mode # Reg) OR (max > 255) OR (max = 31) OR (x.reg < 4));
[15:02:53] <valexey_> Причем я посмотрел - эта функция с этими прекрасными IF'ами, она только в КПшное реализации. Её нет в OP-компиляторе
[15:03:29] <Kemet> ну они там оптимизатор выражений ваяли
[15:03:42] <Kemet> простенький такой
[15:09:19] <valexey_> значит info21 таки прав, и все зло от оптимизации? :-)
[15:14:25] <Kemet> 6-й регистр это SI - возможно проблемы от этого
[15:16:36] <valexey_> а как они вообще считаются?
[15:16:51] <valexey_> это регистры общего назначения или что?
[15:17:22] <Kemet> ну так то да, но SI это индексный регистр
[15:17:53] <Kemet> (* registers *)
AX = 0; CX = 1; DX = 2; BX = 3; SP = 4; BP = 5; SI = 6; DI = 7; AH = 4; CH = 5; DH = 6; BH = 7;
stk = 31; mem = 30; con = 29; float = 28; high = 27; short = 26; deref = 25; wreg = {AX, BX, CX, DX, SI, DI};

[15:18:49] <Kemet> то бишь выделять больше 3-го не стоит
[15:19:13] <Kemet> потому там ассерт и стоит
[15:20:42] <valexey_> Эээ.. У 32битного режима x86 ведь штук 8 регистров общего назначения.
[15:21:13] <Kemet> ну так их там 8 и есть
[15:21:37] <Kemet> но некоторые специфичные, не будешь же ты SP использовать
[15:22:51] <valexey_> SP - он же стек поинтер, то есть он вроде не общего назначения. Или я ошибаюсь? (x86 я не знаю, так что могу плавать)
[15:27:06] <Kemet> общего http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0
[15:28:06] <Kemet> не  то ru.wikipedia.org/wiki/80386#.D0.A0.D0.B5.D0.B3.D0.B8.D1.81.D1.82.D1.80.D1.8B
[15:29:00] <Kemet> http://ru.wikipedia.org/wiki/80386#.D0.A0.D0.B5.D0.B3.D0.B8.D1.81.D1.82.D1.80.D1.8B
[15:30:38] <valexey_> погоди, а кому нафиг нужен этот 16ти битный SP в 32 bit mode?
[15:36:20] <Kemet> это они так 32-х битные назвали
[15:37:26] <valexey_> "Младшая, 16-битная, половина каждого из этих регистров соответствует регистрам AX, BX, CX, DX, SI, DI, BP, SP в предыдущих процессорах семейства x86."
[15:37:39] <valexey_> А, там же ESP
[15:37:42] <valexey_> То есть таки тоже SP
[15:37:46] <valexey_> Всё. Каюсь.
[15:37:51] <valexey_> Туп как пробка.
[15:38:16] <valexey_> А BP это ведь база?
[15:38:52] <TRUE> вроде, кадр стека
[15:38:58] <Kemet> да, указатель
[15:40:19] <valexey_> То есть BP и SP лучше не трогать, да.
[15:40:32] <valexey_> ну, то есть можно. но если только быстро и вернуть все взад.
[15:41:37] <TRUE> как я понимаю, РОН служат для выполнения арифметических операций. То есть содержат данные, над которыми производятся операции или указывают (прямо или косвенно) на данные в памяти для операции.
[15:41:40] <valexey_> блин, в этом x86/32 регистров общего назначения по факту МЕНЬШЕ чем в голимом убогом msp430!
[15:42:27] <TRUE> а в мсп сколько регистров?
[15:43:35] <valexey_> 16. из них как регистры общего назначения используются с R4 по R15
[15:43:45] <valexey_> При этом среди них (регистров общего назначения) нет SP
[15:43:56] <valexey_> То есть они реально общего назначения - храни там что хочешь.
[15:48:58] <Kemet> ну потому у них там и стоит выделение регистров {0..3}, поэтому непонтно откуда там 6-4 взялся
[15:49:12] <Kemet> 6-й
[15:50:35] <Kemet> в принципе SI тоже вполне можно использовать, но он используется аппаратно для всяких нужных телодвижений
[15:57:47] <Kemet> ккк это Кушнир ?
[15:58:00] <valexey_> да
[15:58:07] <valexey_> по всем черточкам похож
[15:58:21] <valexey_> хотя он когда регистрировался специально фейковый временный e-mail адрес подставил
[15:58:51] <Kemet> шоб инфо21 не узнал )
[15:59:16] <valexey_> скорее чтобы Дизер на него мгновенно не сагрился :-)
[16:01:16] <Kemet> срачи конечно напрягают, но видимо у некоторых это жизненная поребность
[16:01:55] <valexey_> угу. не могут держать в себе :-)
[16:02:24] <Kemet> ууу, запустил ужастный Глагол, я удивлен, что Зорко о нём умолчал - этож ридна мова
[16:04:38] <valexey_> :-)
[16:04:54] <valexey_> блин. я таки не понимаю логику этого IF .. ELSEIF'а регистрового
[16:05:20] <valexey_> типо если регистры 0,2,1,3,6 заняты, то мы не будем проверять занят ли 7ой регистр и один фиг вернем его?
[16:05:59] <valexey_> но с седьмым регистром там хоть трапнется. а раньше там третий регистр не проверялся и возвращался если все остальные заняты.
[16:07:46] <Kemet> ну там запрос регистра, формируется список доступных, из них выкидываются sp и bp, из остальных хапаем первый попавшийся из списка доступных
[16:08:28] <Kemet> иф нужен потому как там SET в котром эти доступные
[16:09:27] <Kemet> и этот IF банально проверяет наличие ега с конкретным номером
[16:09:34] <Kemet> рега
[16:15:01] <valexey_> Kemet: см. ELSE - то есть безусловная метка же
[16:15:51] <valexey_> IF 0 IN s THEN n := 0
ELSIF 2 IN s THEN n := 2
ELSIF 1 IN s THEN n := 1
ELSIF 3 IN s THEN n := 3
ELSIF 6 IN s THEN n := 6
ELSE n := 7
END;
[16:17:14] <valexey_> А, хотя нет, там раньше проверяют: IF s = {} THEN DevCPM.err(215); WReg := wreg; BReg := {0..7}; s := wreg END;
[16:17:17] <valexey_> И рапортуют таки.
[16:22:14] <Kemet> почему выделялось именно в такой последовательности - хз, возможно оптимизаця - si и di (6,7) возможно пытались выделить в числе первых по причине их редкого использования, в принципе можно  было наверное не править getreg,, а как-то поравить конкретный вызов, чтобы исключить регистры 6,7, как это и должно быть, но хз, сколько там править, получается малия решил проблемы более кардинально, но баг где-то остался
[16:25:38] <valexey_> гм. вообще, вариант, да. 6,7 имеет смысл использовать сразу, то есть ближе к листьям дерева вычислений. они сразу используются и потом свободны, когда дело дойдет уже до работы со стеком, там возвращением значений и так далее.
[20:10:59] <valexey_> vlad3: а вот и твой автопилот: http://habrahabr.ru/post/180205/