Assembler. - страница 2

AsmX G3: Как работает ZGEN компилятор под капотом

ВведениеМы не просто обновляем инструменты, мы переосмысливаем сам процесс создания программного обеспечения. AsmX G3 — это не очередное инкрементальное улучшение. Это фундаментальный сдвиг. В этой статье я расскажу, как именно работает наш новый компилятор ZGEN, что находится под капотом и какие возможности это открывает. Мы рассмотрим архитектуру, новые фичи, которые всё ещё на стадии тестирования, и то, как мы решаем сложнейшие задачи компиляции. Добро пожаловать в будущее ассемблера.Режимы компиляции: Два пути к одной целиМой компилятор AsmX G3 предлагает два кардинально разных режима: JITC

продолжить чтение

AsmX G3: От высокоуровневого ассемблера к нативному коду. Разбираем компилятор ZGEN

ВведениеAsmX G3 — это наш ответ на избыточную сложность современного системного программирования. Это язык ассемблерного уровня, созданный для тех, кто требует полного контроля над железом, но не хочет жертвовать читаемостью и современными синтаксическими удобствами. Мы взяли мощь ассемблера и обернули её в синтаксис, который не вызывает желания выстрелить себе в ногу.Долгое время AsmX полагался на JIT-компиляцию — быстро, удобно, но не всегда достаточно для задач, где каждый такт процессора на счету. Для создания по-настояшему производительных, нативных приложений мы разработали ZGEN (Zero-latency Code Generation

продолжить чтение

ZX Spectrum проходит тест Тьюринга: учим 8-битный процессор решать CAPTCHA

Или как я потратила выходные на доказательство временного парадокса: Z80 1976 года решает CAPTCHA 2010-х в 2025 годуВступлениеПредставьте: вы открываете сундук и находите пыльный ZX Spectrum. «В музей Яндекса», — думаете вы. А что если я скажу, что эта железка с 48 килобайтами памяти может с 95.5% точностью распознавать рукописные цифры и проходить те самые CAPTCHA-тесты «Я не робот» из 2010-х?Более того: технически она могла это делать с момента выпуска в 1982 году. <cut />Временной парадокс в трёх актах1976: Рождение героя

продолжить чтение

Об ошибках округления и способах борьбы с ними

Современные алгоритмы машинного обучения и искусственного интеллекта обсчитывают огромные массивы чисел, интенсивно используя параллельные аппаратные ускорители. Одним из побочных эффектов параллельных вычислений является то, что порядок, в котором обрабатываются элементы данных, неочевиден и часто плохо предсказуем.Многие алгоритмы быстрых вычислений, к примеру, матричного умножения, намеренно "портят", изменяют порядок действий, за счет этого добиваясь существенного сокращения количества необходимых операций.

продолжить чтение

Зачем программисту дизассемблер в 2025: отладка на слепую под редкие MCU

Даже в 2025 году, когда вокруг нейросети, автогенерация кода и IDE с предиктивным интеллектом, работа с редкими микроконтроллерами всё ещё может обернуться настоящим хардкором. Особенно, если речь идёт о «слепой» отладке без отладчика, когда в арсенале только прошивка, HEX-файл и пара байтов на выводе. В этой статье — личный опыт, много хардкора, дизассемблирование вручную и поиск глюка в 2 КБ бинаря.

продолжить чтение

Упражнение на ассемблер 8051 для LLM — или «игра в испорченный компилятор»

В очередной дискуссии о вреде и пользе новомодных "искусственных интеллектов" (или как точнее их называют LLM) в программировании, пришёл на ум такой простой эксперимент, который я приглашаю повторить всех желающих с разными вариациями.Возьмём очень простую задачу - скомпилировать код. Для наиболее однозначного соответствия я беру код на ассемблере - и хочу получить HEX-файл. Это задача которую можно выполнить на бумажке (имея под рукой список команд и помня формат файла) - да в древние времена кому-то и приходилось такую "ручную компиляцию" выполнять. А что нам ответит, например DeepSeek?

продолжить чтение

Разгон Мандельброта: SIMD с бубнами, OpenMP и CUDA

Построение множества Мандельброта — классический пример чрезвычайно параллельной задачи (embarrassingly parallel problem).Вначале мы разберем наивную реализацию, поиграемся с интринсиками (intrinsics) и, не теряя переносимости, заставим компилятор генерировать нам SIMD-инструкции. Далее добавим многопоточность и в заключение обесценим все наши старания несколькими строчками на CUDA.

продолжить чтение

12
Rambler's Top100