четверг, 7 марта 2013 г.

Первые шаги к многозадачности

Хотя команда ret ещё не работает ;) , имхо, самое время подумать о средствах многозадачности. Сделал набросок дескриптора. Сегментов пока будет 256, но за пределы 30-40 задач пока выход кажется мне маловероятным. ;) В любом случае, поддержка вытесняющего приоритета и кванты времени уже заложены.
Страничную память тоже не планирую, не вижу в ней особого смысла. Тут куда веселей вопрос процедуры переключения контекста и обработка исключительных ситуаций. Но, пока это только планы.

среда, 6 марта 2013 г.

РОН: вполне рабочие.

  Потребовалось всего несколько дней, чтобы число команд РОН довести до 32. Есть всевозможная пересылка, работа со стеком, условные переходы и вызовы подпрограмм. В качестве совсем примитивных операций - сложение и вычитание с регистрами.
   При всём при этом, возврата из подпрограммы по ret - X-CPU пока делать не умеет, хотя можно эмулировать, выталкиванием стека. Итого, общее число команд достигло 6х32=192 или 0xC0 ;).

вторник, 5 марта 2013 г.

pyCPU: 16 команд на РОН не хватило

  В написании эмулятора ПК на python, оказалось, что 16 команд на РОН не просто мало, а ужасно мало. Инкремент, декремент, пересыл между {РОН и РОН, РОН и память, память и РОН}, xor, inv, and, or, shl, shr - и всё. Ни стека, ни индексов, ни переходов, ни каких-либо ещё плюшек.

воскресенье, 3 марта 2013 г.

Проверка Random.seed()

   Если верить встроенной документации модуля random, то с каждым классом Random создаётся новый ГПСПЧ. И в каждом новом процессе новый ГПСПЧ, и т. д. Но вот вопрос: если генераторы цикличны, так можно при выполнении одинакового seed добиться одинаковых результатов?

Модуль Random

  Модуль random из состава python вполне приличная вещь. Если верить встроенной документации, то период генерации ограничивается числом (2**19937)-1. Число, мягко говоря - фантастическое. Это правоверная реализация ГПСПЧ на  Си. Надо полагать, что делали не дураки, но как требует чекисткая мудрость: доверяй, но проверяй.

пятница, 1 марта 2013 г.

Кое что о ГПСПЧ

  Затеял тут организовать ГПСПЧ на python. И задумался я нечаянно, какой-же алгоритм выбрать. На простых числах, через XOR - не самая простая реализация. Посмотрел в сторону ГПСПЧ на кодах Фибоначчи. Как генерировать числа с сдвигом на один, два, n  членов - понятно. Как выуживать из них случайные числа - непонятно.
  И решил я всё-таки вернуться к варианту с простыми числами. По крайней мере, представляю себе, как это сделать (хотя преимущества у ГПСПЧ на кодах Фибоначчи - вижу без всяких оптических приборов). Ещё, что бросается в глаза - многие искренне заблуждаются в том, как на самом деле должен выглядеть ГПСПЧ, и совсем заблуждаются в алгоритмической части. Вроде, штука популярная, есть что почитать. На Си примеров есть, и совсем немало. Ситуация, непонятна.