Нейросеть для программирования на Си вместо компилятора: Gemini путает вызовы ОС даже с документацией
Компания Gemini (Google) не выпускала специализированный компилятор. Речь об эксперименте энтузиаста, который попросил нейросеть Gemini притвориться компилятором языка Си и генерировать ассемблерный код для любительской операционной системы x16-PRos, работающей в 16-битном реальном режиме процессора.

Эксперимент наглядно показал границу нейросетевой кодогенерации: модель генерирует синтаксически корректный ассемблер, но подставляет вызовы BIOS и DOS вместо системных вызовов целевой ОС, даже когда ей дали ссылку на документацию API.
Автор под ником PRoX опубликовал разбор попытки превратить Gemini в «компилятор AIC» (Artificial Intelligence C) для своей 16-битной операционной системы x16-PRos. Системный промпт (установка, которую дают нейросети перед диалогом) описывал флаги компилятора, формат выходных файлов и стандартную библиотеку. Несмотря на подробные инструкции и прямую ссылку на спецификацию API, нейросеть для программирования на Си упорно возвращалась к стандартным прерываниям BIOS и DOS, которые в x16-PRos не работают или работают иначе.
| Что | Когда | Кто сделал | Цена |
|---|---|---|---|
| Эксперимент: Gemini как «компилятор Си» для x16-PRos | Дата не указана | Энтузиаст PRoX, автор x16-PRos | Бесплатно (Gemini доступен в бесплатной версии) |
Что пошло не так при генерации кода?
-
Нейросеть использовала прерывание BIOS
int 0x10для вывода текста вместо системного вызова x16-PRos черезint 0x21с функцией0x01. Даже после того, как автор указал на ошибку и дал ссылку на GitHub-документацию API. -
Вызов завершения программы скопирован из DOS. Модель вставила
mov ah, 0x4C/int 0x21, стандартную DOS-функцию выхода. По словам автора, в x16-PRos эта функция, вероятно, не реализована. -
Функция
putsпотеряла перевод строки. В первой версии кода Gemini сама добавила вывод символов CR+LF (возврат каретки и перевод строки). После исправления промпта и переключения на системные вызовы PRos модель «забыла» эту деталь, хотя стандартная функцияputsв Си обязана добавлять перенос строки. -
Парсинг
printfработает частично. Автор попросил реализовать форматированный вывод с подстановкой%d(целое число). Gemini сгенерировала ассемблерный парсер строки формата, но код функцииprint_numberв опубликованном фрагменте оборвался, полный результат не показан. -
Несмотря на ошибки, базовый вывод строки заработал. После ручных правок программа «Hello, from AIC» запустилась в x16-PRos и вывела текст на экран.
Почему нейросеть для программирования на Си ошибается именно так?
Модели обучены на миллионах примеров кода для распространённых платформ: DOS, Linux, Windows. Любительская ОС x16-PRos в обучающих данных (корпус текстов, на котором тренировали модель) практически отсутствует. Когда нейросеть получает задачу «напиши 16-битный ассемблер», она выдаёт самый частотный паттерн из обучения, а это прерывания BIOS и DOS. Ссылка на документацию помогает частично: Gemini «прочитала» спецификацию формата PLE (PRos Large Executable, формат исполняемых файлов x16-PRos с поддержкой многозадачности и графического интерфейса), но при генерации кода всё равно сползла на привычные вызовы.
Как попробовать самому?
- Откройте Gemini (gemini.google.com), доступен бесплатно, в том числе из РФ через VPN.
- Задайте системный промпт: опишите целевую платформу, формат выходных файлов, доступные системные вызовы. Чем конкретнее, тем меньше «галлюцинаций» (случаев, когда модель уверенно выдумывает несуществующие функции).
- Дайте ссылку на документацию API вашей платформы, если она есть на GitHub или в открытом доступе.
- Проверяйте каждый системный вызов вручную. Не доверяйте номерам прерываний и функций без сверки с документацией.
Сравнение с доступными в РФ инструментами
Из российских нейросетей для кодогенерации доступны YandexGPT и GigaChat. Обе умеют генерировать код на Python, JavaScript и других популярных языках. Однако задачи уровня «сгенерируй ассемблер для кастомной 16-битной ОС» для них ещё экзотичнее, чем для Gemini: в открытых тестах подобных экспериментов с YandexGPT и GigaChat автор не описывал, и ожидать от них лучшего результата на таком материале нет оснований. Для стандартных задач на Си и Python российские модели подходят для первого черновика, но ручная проверка обязательна так же, как и с Gemini.
Этот эксперимент показателен не технической глубиной, а честностью результата. Нейросеть можно «назначить компилятором», но она остаётся генератором текста: выдаёт статистически вероятный код, а не корректный. Для массовых языков и популярных платформ это часто совпадает, для нишевых задач расхождение становится критическим.
Автору Дзена, который пишет про технологии: это готовый формат для контента. Возьмите любой нестандартный инструмент, попросите нейросеть с ним работать, покажите, где она ошибается. Такие разборы собирают вовлечение, потому что читатель видит границу технологии своими глазами.
Если вы используете нейросети для кодогенерации в рабочих проектах, относитесь к результату как к черновику джуниора, который знает синтаксис, но не читал документацию вашего проекта. Каждый системный вызов, каждое прерывание, каждый адрес нужно проверять по документации вручную.
Частые вопросы
Можно ли реально использовать нейросеть вместо компилятора?
Нет. Компилятор транслирует код по формальным правилам и гарантирует корректность на уровне синтаксиса и системных вызовов. Нейросеть генерирует правдоподобный текст на ассемблере, но не проверяет, существует ли вызываемая функция на целевой платформе. Для учебных экспериментов и прототипов подход рабочий, для продакшена опасен.
Почему Gemini «забывает» исправления после нового промпта?
Большие языковые модели не «помнят» контекст так, как программист помнит предыдущую версию кода. Каждый ответ генерируется заново с учётом окна контекста (объёма предыдущего диалога, который модель «видит»). Если окно переполнено или инструкция сформулирована по-новому, модель может откатиться к привычному паттерну из обучающих данных.
Где взять x16-PRos, чтобы повторить эксперимент?
Проект доступен на GitHub: репозиторий PRoX2011/x16-PRos, ветка dev. Документация API, на которую ссылался автор, лежит в папке docs. Система работает в 16-битном реальном режиме, для запуска подойдёт эмулятор вроде QEMU.
Эксперимент PRoX напоминает: нейросеть для программирования на Си полезна ровно настолько, насколько вы сами понимаете целевую платформу и готовы проверять каждую строку сгенерированного кода.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Один разработчик собрал RTS на Марсе 1:1: rust game development с ИИ-агентами вместо команды
Игра «Робосома» существует: один разработчик собрал RTS на Марсе в масштабе 1:1, используя ИИ-агентов вместо команды программистов, и довёл проект до рабочей…

REST API нейросети за 40 минут: как автоматизировать нормализацию номенклатуры в 1С и SAP
Если REST API (программный интерфейс, через который одна система отправляет запросы другой по сети) нейросети звучит как нечто из мира разработчиков, то эта…

Авторство кода нейросети: как понять, где ваше решение, а где чужое
Авторство кода нейросети перестало быть абстрактным вопросом для философов: разработчики, копирайтеры и все, кто делегирует создание текстов или программ…
Комментарии