Все потоки
Поиск
Написать публикацию
Обновить
53.46

Assembler *

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

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

Живое видео и цифровой звук на 8-битной игровой приставке

Время на прочтение14 мин
Количество просмотров12K

В 2016 году американский музыкант Sergio Elisondo опубликовал музыкальный альбом инструментальных кавер-версий A Winner Is You (отсылка к древнему мему, происходящему из классической игры Pro Wrestling), в котором он в одиночку исполнял музыку из популярных игр для восьмибитной приставки NES на настоящих музыкальных инструментах. Необычным дополнением к этому релизу стала его версия в виде картриджа для игровой приставки NES, запускаемая на ней и воспроизводящая музыку из альбома в виде полноценного аудио, а не типичного для этой приставки довольно примитивного синтезированного звука. Я занимался разработкой программной части этого не вполне обычного проекта.

Дальше больше

Истории самодельного робота. Ч.1

Время на прочтение8 мин
Количество просмотров5.3K

image


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


Что будет например если ваша поделка весом под 60 кг сломает, например, кому то ногу.Или собьется GPS-трек и робот спровоцирует ДТП на оживленном пешеходном переходе-перекрестке? Или подарит цветы не той, "незапрограммированной" девушке, ошибется цветом кожи клиента или доставит до адресата пиво теплым а шаурму холодной? Задавшись в один прекрасный момент идеей создания робота своей мечты можно получить ответы на некоторые эти вопросы, заодно, в очередной раз, попробовать перевернуть мир.Собственно под катом описан процесс создания некого универсального робота.Конкретно шасси.

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

Минимизация файла ELF – попробуем в 2021?

Время на прочтение18 мин
Количество просмотров11K

Экспериментальный проект по максимальному уменьшению ELF-файла с программой Hello, World! под целевую систему Linux x64 с помощью NASM. В предыдущем опыте начала 2000-х удалось добиться размера рабочего файла в 45 байтов, но с тех пор ядро сильно изменилось. Каков же будет минимальный жизнеспособный ELF в 2021?
Читать дальше →

Общение двух процессоров 1967BH028 по LVDS с использованием DMA и прерываний

Время на прочтение7 мин
Количество просмотров3.6K

В этой заметке рассмотрим процесс обмена данными между двумя процессорами 1967BH028 через интерфейс LVDS с использованием каналов DMA. А также вкратце ознакомимся с особенностями организации системы вызова прерываний в этом процессоре и задействуем прерывание по завершению работы канала DMA.

кнопка чтобы нажЫмац

Разбор работы LVDS портов и DMA на отечественном DSP 1967ВН028

Время на прочтение6 мин
Количество просмотров4.7K

В продолжение моих заметок, посвященных разбору функционала процессора от фирмы Миландр 1967ВН28, рассмотрим способы общения с внешними устройствами. В данном процессоре есть возможности общения по следующим информационным каналам. Порты LINK (LVDS) и также имеется параллельный интерфейс, предназначенный для работы с внешней памятью. Этой заметке разберем работу с интерфейсом LINK.

Читать далее

Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад

Время на прочтение11 мин
Количество просмотров24K
Это — тёплая, ламповая статья об Ассемблере и разработке ПО. Здесь мы не будем пытаться писать убийцу Майкрософта или Андроида. Мы будем писать убийцу 2048. Здесь не будет докера и терраформа с кубером. Зато здесь вы сможете найти большое количество материалов по Ассемблеру, которые помогут вам вновь погрузиться в мир трёхбуквенных инструкций. Доставайте пивко, и поехали. (Саундтреком к этой статье можно считать IBM 1401 a system manual)

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

Как я портировал DOS игру

Время на прочтение22 мин
Количество просмотров37K

Решил портировать одну старую давно забытую игрушку с DOS на современную платформу. Эта игра, в своё время, привлекала ураганным геймплеем, неплохой разрушаемостью, возможностью включить всё оружие одновременно и устроить настоящий бедлам. В 2021 году играть в такое всё ещё интересно, но делать это в родном разрешении 640х480, как-то не очень. Поэтому решил портировать игру и накатить хай-рез патч. Получилось!

Читать далее

Программирование nes (dendy) вычисление коллизий

Время на прочтение5 мин
Количество просмотров4.2K

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

Столкновения под катом

Зачем нужен регистр SPL

Время на прочтение6 мин
Количество просмотров5.6K

Так и тянет меня задать в заголовке статьи вопрос, что по здешним правилам не допускается. А ответ опять очевиден: регистр SPL вообще не нужен.

Я уже давно выступал с критикой системы команд AMD64, сейчас более известной как x86-64. Причем, задача специально анализировать появившиеся и исчезнувшие команды не стояла. Просто при переносе средств программирования с Win32 на Win64 возникал ряд проблем, вызывавших один и тот же вопрос: «почему же раньше все работало, а теперь нет?». Это касается некоторых выброшенных разработчиками архитектуры AMD64 команд, которые пришлось эмулировать, и, особенно, аппаратной поддержки контроля целочисленного переполнения с помощью инструкции INTO, которая вдруг стала недоступной.

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

Но все-таки проблемы как-то разрешились, и пришло время не только бороться с недостатками системы команд AMD64, но и воспользоваться ее достоинствами. А основных достоинств, по сравнению с IA-32, напомню, два: восьмибайтная адресация, снимающая предел в 4 Гбайт, и увеличенное число регистров общего назначения в два раза.

В случае регистров размером в 2, 4 или 8 байт действительно все логично и естественно. Можно даже сказать, что число регистров увеличилось более чем в два раза, поскольку указатель стека и не используется в вычислениях как остальные. Поэтому в IA-32 у программиста реально было 7 регистров общего назначения, а в AMD64 их стало 15, т.е. RAX, RBX, RCX, RDX, RBP, RSI, RDI и R8-R15.

Читать далее

Как распаковать вредоносное ПО с помощью x64dbg

Время на прочтение12 мин
Количество просмотров12K

Эта статья представляет собой руководство по x64dbg, в котором объясняется и демонстрируется методика реверс-инжиниринга вредоносных программ. Она является продолжением нашей серии публикаций, посвященных x64dbg:

Читать далее

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

Отечественный DSP процессор 1967ВН028 от фирмы Milandr. Небольшой мануал по арифметике на языке assembler

Время на прочтение9 мин
Количество просмотров9.8K

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

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

Читать далее

Что такое x64dbg и как им пользоваться?

Время на прочтение6 мин
Количество просмотров45K

Введение и обзор применения x64dbg в качестве инструмента для анализа вредоносных программ. Этой публикацией мы открываем серию из четырех статей о x64dbg.

Читать далее

За что я люблю ассемблер?

Время на прочтение11 мин
Количество просмотров64K

Этой статье уже почти 3 года. Однако сегодня я решил подредактировать её, дополнить и выложить, наконец, на Хабр.

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

Ассемблер RISC-V для начинающих

Время на прочтение12 мин
Количество просмотров51K

Если вы не знаете ни одного ассемблера, или, возможно, не имеете большого опыта кодинга как такового, то ассемблер RISC-V может быть одним из лучших вариантов для того, чтобы погрузиться в эту тему. Конечно, материалов по ассемблеру x86 гораздо больше. Больше людей, которые могут в этом помочь. Но x86 - это чудовище, имеющее более 1500 различных инструкций.

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

Если вам необходим хороший старт, и вы не знаете ничего о микропроцессорах, вы можете прочесть мою статью "Как работает современный микропроцессор?" (How Does a Modern Microprocessor Work?).

Если вы хотите чего-нибудь простого и весёлого, можете начать с различных игр, в основе которых лежит программирование на ассемблере: Learn Assembly Programming the Fun Way.

Другим может понравиться ретропроцессор, такой, как 6502, использовавшийся в Commodore 64. Но проблема в том, что он окончательно устарел. При его разработке не учитывались реалии сегодняшнего дня.

Большой плюс RISC-V состоит в том, что он обладает современным и простым набором команд, спроектированным с учётом современных требований, таких как медленный доступ к памяти, использование предсказателя переходов, суперскалярного out-of-order выполнения команд и т.д.

Если вам интересно всё это, прочтите: Why Is Apple’s M1 Chip So Fast?

Перед тем, как мы начнём, можете распечатать это: James Zhu RISC-V Reference.

Читать далее

Общаемся с дисплеем SSD1306 по i2c

Время на прочтение4 мин
Количество просмотров19K

Все любители электронных самоделок когда-нибудь приходят к желанию отобразить работу своей поделки на экране в виде текста или графики. Самый бюджетный способ сделать это — обратиться к алфавитно-цифровому дисплею типа LCD1602 или LCD2004, общение с которыми происходит либо по параллельному интерфейсу, либо через переходник-конвертор в I2C. Второй способ — использовать графический дисплей, их множество, например SSD1306 с размером матрицы 128x64 пикселя.

Читать далее

Самодельные библиотеки ассемблера FASM

Время на прочтение3 мин
Количество просмотров5.2K

Здесь я немного расскажу о библиотеках strnum.inc и myMSVlib.dll, которые я сам сделал. Они могут кому-то пригодится. Я уверен что написал не без ошибок. Все ниже перечисленные функции сохраняют состояние регистров, кроме регистра eFLAGS. Исходный код прилагается. Все функции возвращают значение через EAX.

Строки должны иметь в конце завершающий нуль.

Читать далее

Assembler. Установка интерпретатора и запуск первой программы через DOSBox

Время на прочтение4 мин
Количество просмотров74K

В данном курсе планируется разобрать основные особенности программирования на самой простой реализации assembler – TASM. Этих знаний лично мне вполне хватило, чтобы на отлично сдать ЭВМ в институте и закончить все лабораторные работы. Во многих уроках будет домашние задание по их мотивам.

Для начала давайте установим наш старенький компилятор.
Ссылка

Читать далее