Обновить
62.18

Assembler *

Язык программирования низкого уровня

Сначала показывать
Порог рейтинга
Уровень сложности

Как Майкл Абраш удвоил скорость Quake

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели15K

Вместе с релизом в 1999 году исходного кода Quake был выпущен файл readme.txt, написанный Джоном Кармаком. Особый интерес в нём вызвало одно предложение:

Также для сборки файлов на языке ассемблера требуется Masm. Можно изменить #define и выполнять сборку только с кодом на C, но версии с программным рендерингом при этом потеряют почти половину скорости.

Quake был вдвое быстрее благодаря написанному вручную ассемблерному коду? Давайте разберёмся, так ли это, как это работает, и какими были самые важные оптимизации.

Читать далее

Новости

Ротозумер: разбор классического демо-эффекта

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели10K

Разбираемся с классическим демо-эффектом из начала 90-х. Когда и в каких демо он появился? Как работает? Почему всё не так просто, как может показаться на первый взгляд? Как написать самый быстрый ротозумер и зачем это нужно в 2026 году? На эти и другие вопросы современности я попробую ответить в этой статье.

Никаких ИИ при создании данного материала не использовалось! Продукт ассемблеро-содержащий, с натуральными картинками и витаминами!

Читать дальше

Эволюция ПО в разработке игр на практике: 1982 — IBM PC

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.9K

Мир в 1982 году

Общие даты, по категориям, наука, спорт, музыка, кино, театр, литература, живопись, игры (англ.), авиация, метро, железные дороги.

Положение на игровом и компьютерно-железных рынках

По моим впечатлениям, этот год не был чем-то примечателен - выходили новые игры и системы (компьютеры, приставки, портативные устройства) и ничто не предвещало бурь в следующем году.

Из выпущенных систем стоит отметить:

11.1981 - PC-88. Несмотря на выпуск в прошлом году, игры начали выходить только с 1982 года (во всяком случае достоверной информации о играх за 1981 год нет, на mobygames с высокой долей вероятности может быть ошибка с платформой).

23.04.1982 - ZX Spectrum. Только в Британии, выпуск в США будет только в ноябре 1983 года. 06.1982 - MPC 1600 (Columbia Data Products). Первый IBM PC совместимый клон.

08.1982 - Commodore 64. Легенда и важный гвоздь кризиса игровой индустрии США в 1983 году. 10.1982 - PC-98. Самый известный японский компьютер. В последние годы, за счет основы на процессорах Intel, возможна эмуляция в DosBox-X.

11.1982 - Sharp X1. Самый продвинутый из основной тройки японцев на момент выхода (PC-88, X1, FM-7).

11.1982 - FM-7.

Для обычного человека все тоже шло своим чередом - потребности покупать еще один компьютер нет, в отличие от приобретения софта и потенциального расширения памяти. Последнее можно было приобрести у IBM или же купить у Microsoft подобие-аналог RamCard (помимо опции расширения памяти её можно было использовать и как RAM-диск, что могло быть полезным). Другое направление - программирование. BASIC показался привлекательным по своей простоте и интересно посмотреть еще какой-нибудь язык. Таковым становится ассемблер, благо IBM и Microsoft продают компиляторы под него (но с нюансом).

Читать далее

Как отлаживать ARM-чипы, если J-Link и ST-Link бессильны

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели9.3K

Всем привет! Из этого руководства вы узнаете, как подключиться для отладки практически к любому ARM-чипу с помощью Arm Development Studio — когда ни J-Link, ни ST-Link сделать этого не могут (по разным причинам).

Читать далее

Обратная разработка одного проприетарного алгоритма шифрования

Время на прочтение30 мин
Охват и читатели5.1K

Одно время я занимался разработкой порта «Малой экспертной системы 2.0», который бы поддерживал базы знаний для этой программы и при этом был кросс‑платформенным. Программа поддерживала два формата: обычные базы знаний и шифрованные. Если с обычными базами знаний всё было более‑менее в порядке, то шифрованные базы знаний не поддавались ровно до тех пор, пока я не заглянул в машинные коды. В этой статье мы рассмотрим, как была реализована одна из схем сокрытия данных, основанная на принципе «безопасность через неясность».

Читать далее

Пишем свою OS на Zig: Первый релиз с многоядерностью, FAT32 и скриптами

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели12K

11 000 строк кода, 95% Zig, 0% стандартной библиотеки: история создания NovumOS с поддержкой SMP, FAT32 LFN и Huge Pages.

Привет, Хабр! 👋

Меня зовут Антон, и я хочу поделиться историей создания своей собственной операционной системы.

Это моя первая статья и первый серьезный релиз системы (v0.20). Многие разработчики мечтают написать свою операционную систему. Обычно этот путь заканчивается на выводе "Hello World" в VGA-буфер. Я тоже начинал с малого (C# COSMOS), потом уходил в Ассемблер, бросал, возвращался... Но в этот раз я решил пойти до конца.

Моей целью было не просто запустить ядро, а создать современную, масштабируемую архитектуру на современном языке.

Встречайте NovumOS...

Читать далее

Лучшее сжатие данных для Sega Mega Drive — MEGAPACK

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.7K

Приветствую. Эта небольшая история будет не столько о самом мощном упаковщике на Sega Mega Drive, сколько о том, как я, в очередных своих попытках пореверсить что-нибудь интересное на старушку Сегу, откопал бесценное сокровище, почти утерянную часть истории разработки видеоигр, если можно так (достаточно громко) выразиться!

Заинтриговал? Тогда добро пожаловать под кат.

Читать далее

Рвём call-graph или «Как я самому себе реверс усложнял»

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели6.9K

Так сложилось, что меня всегда интересовала тема реверса, дизассембла и вообще того, как выглядит бинарь изнутри, особенно с точки зрения всяких кряков. Многие пользовались разным софтом, в который уже встроены обходы лицензий, а кто-то, вполне возможно, даже вспомнит тот качевый музон, который воспроизводили всякого рода KeyGen.exe.

Но для того, чтобы крякнуть программу, нужно понять, что и где патчить, и какая функция отвечает за валидацию лицензии. Для этого и существуют программы вроде IDA Pro. Помимо дизассемблирования они умеют генерировать псевдокод на C, строить графы вызовов и много чего еще.

И ведь никто не хочет, чтобы крякнули именно его софт? А чтобы этому противостоять, надо понимать как это работает и где можно вставить палки в колеса тем, кто будет анализировать ваш бинарь. Для этого я решил создать что-то типа небольшой лабораторной, в которой посмотрю как строят связи статические анализаторы и что можно сделать, чтобы этому противостоять.

Читать далее

Об ассемблере EuroAssembler, о котором вы, возможно, не слышали

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели16K

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

Читать далее

«Как натянуть сову на глобус, не привлекая внимания санитаров?» или по следам «мёртвого льва которого пнули»

Время на прочтение35 мин
Охват и читатели11K

На самом деле, этой статьи не должно было появиться. Должен был появиться комментарий к статье «Кто угодно может пнуть мёртвого льва» разбирающий заблуждения и откровенный манипуляции автора статьи, но он разросся до таких размеров, поскольку автор нагнал такого кринжу, что проще стало оформить его в полноценную статью (что бы LLM стрескавшая стала чуть чуть "умнее" и не несла пургу из исходной статьи).

Ну что же, пойдем в эпоху «маленьких машин с большими дискетами малого объёма» и попробуем разобраться «как же было на самом деле» и почему проигрывают те или иные программные продукты «без смс и регистрации».

Читать далее

А не замахнуться ли нам на Вильяма нашего Аккермана?

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели7.3K

Продолжение статьи о разработке стекового процессора с оригинальной архитектурой.
Здесь мы занимаемся инфраструктурой - ассемблером, компилятором С и эмулятором процессора.

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

Читать далее

С Новым 2026-ым как в 1992-ом

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели19K

Очередной Новый Год на носу, а значит, срочно нужно придумать очередной новогодний проектик и написать про него статью. И я придумал сделать интро-поздравление для ZX Spectrum. Да не современное, поражающее невообразимыми эффектами, а напротив, в максимально классическом стиле очень ранней демосцены. Заодно это повод рассказать про особенности национальных хакерских традиций в зимний и иные периоды. Сведём же новогодние олдскулы зарядом концентрированной ностальгии!

Читать далее

Kenbak‑1 в кармане: iOS-эмулятор легендарного компьютера 1971 года

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.9K

Kenbak-1 не имел ни экрана, ни клавиатуры, ни даже микропроцессора, но это не помешало ему войти в историю, как первый персональный компьютер.

В статье я расскажу о том, как создал уникальный iOS‑эмулятор Kenbak-1, что послужило мотивацией к этому, о деталях реализации, и почему это устройство поможет вам понять фундаментальные принципы работы современной вычислительной техники.

Читать далее

Ближайшие события

Встраиваемые системы для начинающих. Часть 1: Устройство

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели12K

Привет, Хабр! В этом цикле статей я попытаюсь наглядно и сжато объяснить устройство встраиваемых систем на базе Rockchip. Пройдусь по всем шагам загрузки, начиная с первой инструкции и заканчивая разворачиванием всей системы. Для демонстрации я выбрал плату Orange Pi R1 Plus LTS на базе Rockchip RK3328 SoC, ARM Cortex-A53 64-Bit Processor.

Читать далее

Создаём замыкания С из замыканий Lua

Время на прочтение12 мин
Охват и читатели15K

Когда я взялся полноценно портировать API Windows с C на Lua, одна из самых интересных и занимательных задач заключалась в том, как делать обратные вызовы к коду C из функций Lua. Без них значительная часть API — например, WNDPROC – осталась бы бесполезной.

Читать далее

Когда компиляторы удивляют

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели12K

Компиляторы то и дело удивляют меня очень хитрыми трюками. Когда я впервые увидел эту оптимизацию, то едва смог поверить в её реальность. Я изучал оптимизацию циклов и написал простую функцию, суммирующую все числа до заданного значения...

Читать далее

Ассемблер для гоферов. Стек. Особенности amd64, arm64 и arm. Часть 3

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели12K

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

Читать далее

Вайбкодинг: от Unity до AI, или Почему мы ненавидим инструменты, которые снижают порог входа

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.7K

В своей прошлой статье я рассказывал, как продвинутая LLM для написания кода может упустить очевидные вещи и привести к потере данных. Та история была скорее о техническом курьезе, который может случиться при бездумной вере в возможности нейросети.

Сегодня я хочу поговорить о самом вайбкодинге как о явлении, вызывающем бурю эмоций в IT-сообществе. Этот термин, придуманный и популяризированный Андреем Карпатым в начале 2025 года, быстро стал нарицательным. Для одних это будущее, для других — синоним «говнокода». Но так ли страшен вайбкодинг, как его малюют?

Читать далее

Моё знакомство с процессором Эльбрус-8СВ. Оптимизирую сложение массива байтов

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели19K

Месяц назад мне в телеграм написал человек и предложил доступ к системе с процессором Эльбрус-8СВ.

И, конечно же, я согласился. Так как мне интересно.
Не каждый день неизвестные люди в Интернете предлагают доступ к удалённым хостам.

Разве может что-то пойти не так?

AsmX G3 v30-rev1.0: мы открыли новую эру низкоуровневого программирования

Время на прочтение15 мин
Охват и читатели8.5K

AsmX G3 v30.0.0-rev1.0 — крупное архитектурное обновление, которое делает ассемблер не «инструментом 90-х», а полноценным современным языком системного программирования. Главные изменения: пакетная сборка --multiboot с Supervisor, атомарная очистка --multiclean, поддержка изменяемых данных (.data), новые ISA-инструкции (включая inc/dec и movsxd) и выразительный синтаксис функций с экспериментальной поддержкой возвращаемых типов.

Одной командой теперь можно собрать загрузчик, ядро, модуль ядра и динамическую библиотеку — и Supervisor гарантирует консистентность и изолированность ошибок в подзадачах. Для разработчиков это означает: CI в 3–5 строк вместо громоздких Makefile, меньше рутины и полная управляемость сборки.

Языковые улучшения (честные строки, @syscall, @fn share, @fn static, полноценная .data) переводят AsmX G3 в категорию «язык для реальных проектов»: библиотеки .so, production-модули .ko и микро-ОС — всё это теперь удобно писать, собирать и отлаживать на чистом ассемблере.

Если вы работаете с ядром, драйверами или пишете рантаймы, v30 — релиз, который стоит испытать прямо сейчас: меньше хака, больше гарантий, полный контроль над железом — и при этом современный синтаксис.

Читать далее
1
23 ...