Этот сайт — моя персональная записная книжка. Интересны мне, по большей части, программирование, история и события из моей жизни.

«МК-Про»: переписано на Си++

Сегодня наконец закончился процесс переноса кода «МК-Про» на C++. Переписывание заняло около восьми дней, использовались три нейросети. Основной каркас был перенесён с помощью «ГПТ-5.5», часть тестов довольно механически переносилась нейросетью «ГПТ-5.3-Кодекс-Спарк», а последние штрихи вносил и баги чинил «Опус 4.8».

Производительность трансляции улучшилась в среднем в 2,5 раза. Есть один регресс у одной короткой программы, которая выполняются до 50 миллисекунд, но это, скорее всего, погрешность: не исключено, что в этот момент в фоне стартовало что-то тяжёлое.

За восемь дней было переписано 122 тысячи строк, которые превратились в 145,5 тысяч строк на C++.

3 комментария
Макс 20 дн

Жесть. Я на верилоге за пару дней написал (тогда ещё нейронок не было) процессор 8080, а тут столько мучений. Реально не понимаю что там может быть сложного? Строк кода наверное больше чем транзисторов в микросхемах этого калькулятора

Евгений Степанищев 20 дн

Как уж что? Огромное количество совершенно разношёрстных оптимизационных стратегий, которые надо уметь применять. Эффективные компиляторы/трансляторы писать очень сложно.

Попробуйте, например, прикинуть как бы вы реализовали оптимизационную стратегию использования регистра X2, учитывая все его ограничения. Если сложно, можно глянуть на конкретные оптимизации с его участием.

Макс 20 дн

Тяжёлый слог у описания оптимизаций, но примерно понял, стараться подгонять числа чтоб одно число можно было использовать и тут и там. Я таким занимался когда хотелось чисто теоретически написать самый маленький резидентный вирус, там размер вируса и сегмент было одним числом (или что-то такого). Ладно, я не вникал в эти запрограммированные оптимизации, но разве нельзя просто смоделировать-скомпилировать лярд вариантов и выбрать тот, который вышел меньше? (Или какой там критерий)

Евгений Степанищев 20 дн

…стараться подгонять числа чтоб одно число можно было использовать и тут и там.

Это отношения к X2 не имеет, это ещё одна оптимизация.

…но разве нельзя просто смоделировать-скомпилировать лярд вариантов и выбрать тот, который вышел меньше?

В смысле просто перебрать все операции в 105 ячейках и посмотреть получится ли нужная программа или как это? Во-первых, перебираться это будет до тепловой смерти Вселенной, а во-вторых, как понять что получилась искомая программа?

Макс 20 дн

P.s. я исхожу из того, что памяти и регистров там кот наплакал и нет смысла делать полноценный компилятор как на pc

Евгений Степанищев 20 дн

Так тем и сложнее.