Даже в 2025 году, когда вокруг нейросети, автогенерация кода и IDE с предиктивным интеллектом, работа с редкими микроконтроллерами всё ещё может обернуться настоящим хардкором. Особенно, если речь идёт о «слепой» отладке без отладчика, когда в арсенале только прошивка, HEX-файл и пара байтов на выводе. В этой статье — личный опыт, много хардкора, дизассемблирование вручную и поиск глюка в 2 КБ бинаря.
Рубрика «ассемблер» - 3
Как специально написать чрезвычайно медленный код
2025-04-30 в 20:52, admin, рубрики: x86, ассемблер, низкоуровневое программирование, производительность, челленджРаз в несколько лет я устраиваю в нашей исследовательской группе челлендж «Напиши медленный код». Цель – написать код с минимально работоспособным количеством инструкций на цикл (IPC) с условием, чтобы этот код выполнялся на заранее подобранном сервере с архитектурой x86.
На первый взгляд, это абсурд! В сущности, так и есть. Однако, есть в этой безумной задаче и некоторая методическая ценность. Инженеры, проектирующие процессоры, прилагают все усилия ради достижения наивысшего возможного IPC… даже для очень неэффективного кода. Так и задумано, что писать код с очень высоким показателем IPC непростоЧитать полностью »
Низкоуровневое программирование под 8086 для любопытных, часть 1
2025-04-26 в 22:30, admin, рубрики: agalilov, i8086, ассемблер, ассемблер для начинающих, видеобуфер, низкоуровневое программирование, прерывания, стекВ первой части мы:
-
посмотрим, как работать с памятью и регистрами 8086
-
узнаем, как написать простую программу на ассемблере прямо в отладчике
-
изучим работу механизма прерываний и сделаем демонстрационный пример
Статья рассчитана на тех, кто имеет начальный опыт программирования, но хочет понять основы низкоуровневого программирования и многозадачности.
Примеры в бинарном виде доступны по ссылке https://github.com/galilov/habr/blob/main/asm-8086-galilov.zip.
Что нужно знать перед стартом
Процессоры ARM: смешиваем NEON с SVE — и забава, и польза
2025-04-25 в 13:00, admin, рубрики: arm neon, arm sve, clang, selectel, ассемблер
Большинство мобильных устройств используют 64‑битные ARM‑процессоры. Однако они все заметнее и на серверах. Их число неуклонно растет, и все больше компаний, включая таких гигантов, как Amazon и Microsoft, также переходят на 64‑битные ARM.
У этих процессоров есть специальные инструкции — ARM NEON. Они обеспечивают параллелизм, известный как SIMD — Single Instruction, Multiple Data, то есть «Инструкция одна, данных множество». Например, можно сравнить шестнадцать одних значений с шестнадцатью других с помощью всего одной такой инструкции.
Некоторые из самых последних процессоров ARM также поддерживают еще более продвинутый набор команд — SVE, Scalable Vector Extension, или «Масштабируемое векторное расширение». Прогресс не останавливается — и вот уже появились спецификации SVE 2 и SVE 2.1.Читать полностью »
Биперная музыка на Arduino
2025-02-13 в 13:01, admin, рубрики: 1bit, arduino, beeper, C, PWM, ruvds_статьи, Z80, Zilog Z80, zx spectrum, ассемблер, бипер, видеоигры, музыка, спектрум, узч, усилитель, усилитель звуковой частоты, чиптюн, электроника, Электроника для начинающих, электроника своими руками
Любимый отечественными энтузиастами компьютерной ретро-техники компьютер «Синклер» ZX Spectrum родом из начала 1980-х годов — восьмибитный. Любимый самодельщиками нынешнего тысячелетия Arduino родом из середины 2000-х годов — тоже восьмибитный. Они похожи, но такие разные. Сегодня попробуем навести мостик между этими мирами, преодолеть пропасть в два десятка лет, и заставить два разных устройства проиграть одни и те же мелодии.
В этой статье сплетаются сразу три темы: как устроены некоторые музыкальные полифонические процедуры на ZX Spectrum, как воспроизвести результат их работы в совершенно иной реализации на Arduino, а заодно немного электроники для начинающих — рассуждения на тему, как можно правильно или неправильно подключить динамик для вывода звука к этой самой Ардуине.Читать полностью »
Операционная система в 1 000 строках кода (Часть 1)
2025-01-19 в 9:01, admin, рубрики: risc-v, ruvds_перевод, UNIX, ассемблер, операционные системы, Программирование, разработка ос, Си, ядро
Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.
Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система Linux, которая воспринимается как масштабный опенсорсный проект, на стадии версии 0.01 включала всего 8 413 строк кода. Сегодня ядро Linux действительно огромно, но начиналось оно, как и типичный хобби-проект, с крохотной базы кода.
В рамках предстоящей серии статей мы на языке С реализуем базовое переключение контекста, страничное распределение памяти, режим пользователя, командную оболочку, драйвер дискового устройства и операции чтения/записи. И хотя такой объём работы может показаться масштабным, всё это уместится всего в 1 000 строк кода.
Но сразу предупрежу — процесс окажется не так прост, как выглядит на первый взгляд. Самой сложной частью создания собственной ОС является отладка. И мы не сможем использовать для этого printf, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!
Чем сложнее отладка, тем больше радости от получения рабочего продукта. Так что приглашаю вас погрузиться в захватывающий мир разработки операционных систем!Читать полностью »
Упрощаем «простой» ELF
2025-01-12 в 9:01, admin, рубрики: elf, gcc, ruvds_перевод, ассемблер, Программирование, Си
Давайте-ка напишем простую программу для Linux. Насколько трудной она может быть? Только тут надо учесть, что простота противоположна сложности, но не трудности*, и создать нечто простое на удивление трудно. А что останется, если избавиться от сложности стандартной библиотеки, всех современных средств безопасности, отладочной информации и механизмов обработки ошибок?Читать полностью »
256 байт веселья, или как развлечь себя Ассемблером когда скучно
2025-01-08 в 10:16, admin, рубрики: demoscene, sizecoding, ассемблер, демки, Демосцена, ненормальное программирование, Программирование, ретро ПК, сайзкодингЭто еще одна статья про демосцену, сайзкодинг, ассемблер, MS-DOS и ретрокодинг. То есть, о том, как ночами напролет добровольно и бесплатно писать бесполезный и очень трудоемкий код и поседеть в 30 лет. Но вдруг вам захочется?
Можно ли уместить игру Minecraft всего в один QR-код?
2025-01-04 в 22:13, admin, рубрики: java, minecraft, ассемблер, оптимизация, СиОтвет: да! И вот же он:

Игра запускается, и вы можете перемещаться по миру 64x64x64 при помощи клавиш WASD. Пробелом прыгаем, мышью осматриваемся. Щёлкнув левой кнопкой мыши, можно разрушить блок, а правой — установить землю.
Можно просмотреть QR-код при помощи следующей команды под Linux:
zbarcam -1 --raw -Sbinary> /tmp/m4k &&chmod +x /tmp/m4k && /tmp/m4k

