Как стать автором
Обновить
32.48
Рейтинг

Assembler *

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

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

Написание ОС с нуля: Глава 2, Часть 3 — Терминал

Ненормальное программирование *Open source *Assembler *UEFI *

В предыдущей статье мы написали простейший загрузчик, печатающий на экран "Hello, World!" и завершающийся по нажанию клавиши. Сегодня напишем терминал, у которого будет несколько комманд, обновим библиотеку и сделаем ещё пару вещей.

Читать
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 3.3K
Комментарии 8

Новости

ОС с нуля: Глава 2, Часть 1 — Да зачем нам этот Legacy

Ненормальное программирование *Open source *Assembler *UEFI *

Пару месяцев назад я решил начать серию статей про написание своей ОС с нуля. Описал написание Legacy MBR загрузчика и переход в защищенный режим (без прерываний) и ещё пару мелочей. Сегодня я решил, что попытаюсь "перезапустить" эту серию (сохранив нумерацию частей). Суть в том, что теперь будут использоваться актуальные на август 2022 года материалы, и разработанное ПО можно будет легко протестировать на своей (U)EFI-машине.

Читать
Всего голосов 31: ↑29 и ↓2 +27
Просмотры 10K
Комментарии 23

Все должны пойти на демосцену

Assembler *C *Конференции Дизайн Демосцена

Да, именно так должен называться анонс фестиваля компьютерного искусства и самодельной электроники, проходящего в этом году, 20-21 августа, неподалеку от Санкт-Петербурга. Название для анонса мне посоветовал человек с никнеймом @Superogue - основатель и ведущий онлайн-фестиваля демосцены Lovebyte. Он, в свою очередь, приводит в пример анонс фестиваля Outline 2022, который имел похожий заголовок: Everyone Should Go To A Demo Party.

Потому что демосцена - это круто.

Читать далее
Всего голосов 36: ↑33 и ↓3 +30
Просмотры 4.8K
Комментарии 15

Вторая жизнь китайского чудо-шнурка J2534

Assembler *C *Реверс-инжиниринг *Автомобильные гаджеты

Давным-давно, когда деревья были большими и вариации комплектаций одной модели автомобиля можно было перечислить пальцами одной руки, был куплен диагностический адаптер, о котором сегодня пойдет речь. Творение неизвестного китайца получило название Mini-VCI J2534. Откуда он взялся доподлинно неизвестно, но позиционируется как интерфейс для работы с различными Тойотами, а так же как J2534 совместимый адаптер (спойлер - нет). В момент покупки его было достаточно для диагностики и ковыряния в мозгах автомобилей тех лет, но прогресс не стоит на месте и в нынешних реалиях он если так можно выразиться - "не вывозит". О том, можно ли с этим что-то сделать и пойдет речь ниже.

Итак, знакомьтесь - наш пациент снаружи и внутри.

Читать далее
Всего голосов 61: ↑60 и ↓1 +59
Просмотры 13K
Комментарии 19

Как создать проект на ассемблере в STM32CubeIDE

Assembler *
Из песочницы

Доброго времени суток, сегодня я хотел бы поделиться своим опытом создания шаблона проекта в CubeIDE для программирование на Ассемблере.

Так как CubeIDE использует средства GNU то и синтаксис ассемблера у нас будет советующий. Для начала откроем CubeIDE и создадим новый проект. В качестве испытуемого микроконтроллера возьму STM32G030F6P6 уж очень мне они нравятся. А так данный способ работает и с другими сериями микроконтроллера STM32.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 3.2K
Комментарии 6

Сужение данных. Продолжение борьбы с переполнением

Программирование *Совершенный код *Assembler *Компиляторы *

Все началось с глупой ошибки. В тексте программы вместо оператора x=20; где x – целая переменная со знаком и размером в байт, случайно написали x=200;

И компилятор, что называется не моргнув глазом, сформировал команду записи в переменную x константы 0C8H, что вообще-то соответствовало оператору x=-56; Выяснилось, что за долгие годы эксплуатации этого компилятора ни одна собака ни один пользователь (включая и нас самих) никогда не писал подобных ляпов и поэтому ошибка в компиляторе оставалась незамеченной. А виноваты оказались команды сужения данных.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 1.6K
Комментарии 1

Соглашения о вызовах

Программирование *Assembler *C *Реверс-инжиниринг *Разработка под Windows *

Это стандартизированные методы реализации и вызова функций.

Соглашение о вызовах опредяют как функция вызывается, как функция управляет стеком и стековым кадром, как аргументы передаются в функцию, как функция возвращает значения.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 2.6K
Комментарии 11

Устройство Стека для Intel386

Assembler *Системное программирование **nix *
Из песочницы

Стек (от англ. Stack) - специально отведённое место в памяти для хранения временных данных. Он подчиняется следующим правилам

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 5K
Комментарии 14

C++ разведка кросс-компиляции Linux->Windows

C++ *Assembler *Реверс-инжиниринг *

Эта история началась когда удобный для меня инструмент VSCode из за одного плагина на борту стал не совсем удобен. А именно, «natizyskunk.sftp» плагин, который позволяет подключится по протоколу (S)FTP к серверу, и вносить изменения на сервер, просто сохранив файл. Всё нечего, если бы настройки подключения к серверам не хранились в корне отдельно взятого проекта. Когда у тебя с десяток проектов, ещё можно потерпеть, но более 70 проектов и они все на разных серверах, то перенос и добавление в каждый из проектов актуальной настройки, например пароль, который периодически меняется, заставляет как минимум раздражённо искать подходящую настройку и с комбинацией клавиш Ctrl+C, Ctrl+V, менять устаревшие настройки или добавлять новые. В дальнейшем оказалось, что коллеги пользуются другими идентичными плагинами с названиями «liximomo.sftp», «doujinya.sftp-revived».

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 3.2K
Комментарии 10

Как защищать границы массива без команды BOUND

Программирование *Совершенный код *Assembler *Компиляторы *

Я уже плакался по поводу исключения в x86-64 команд двоично-десятичной арифметики DAA/DAS и плакался по поводу отмены команды проверки целочисленного переполнения INTO. Теперь настала очередь плакаться по поводу выброшенной команды BOUND. Как говорится, леди и джентльмены, подставляйте свои жилетки и декольте. Начинаю плач.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 1.4K
Комментарии 1

Работа с внешней параллельной шиной на отечественном DSP процессоре 1967ВН028 фирмы Миландр

Assembler *Программирование микроконтроллеров *
Tutorial

Отечественный процессор 1967ВН028 от фирмы Milandr предназначен в первую очередь для решения вычислительных задач и поэтому на его борту есть всего два способа обмена данными с внешним миром. Один из них - работа с LVDS LINK портами (разобран в прошлых статьях) и второй это внешняя параллельная шина.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 3.9K
Комментарии 6

Простое руководство по атомарности в C++

Блог компании Издательский дом «Питер» Программирование *C++ *Assembler *Параллельное программирование *
Перевод

Часто возникает путаница с тем, что же понимается в компьютерных науках под «атомарностью». Как правило, атомарность – это свойство процесса, означающее, что он совершается за один шаг или операцию. Но в языке C++  атомарность определяется гораздо более специфичным образом. На самом деле, при использовании std::atomic  с классами и типами еще не гарантируется, что весь код будет подлинно атомарным. Хотя, атомарные типы и входят в состав языка C++, сами атомарные операции должны поддерживаться на уровне того аппаратного обеспечения, на котором работает программа. Эта статья – простое руководство, помогающее понять, что же представляет собой атомарность в C++.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 5.3K
Комментарии 10

ОС с нуля: Глава 1, Часть 2 — 32 лучше 16-ти

Assembler *
Tutorial

Хай Хабр! Это серия статей по написанию моей ОС с нуля. Я лютый фанат ретропрограммирования, поэтому я мгновенно забуду про существование EDК. Просьба не писать комменты по типу "BIOS давно устарела где UEFI?". Пишу это просто чтобы было, что почитать вечером и порелаксить. Спасибо.

Читать
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 6.3K
Комментарии 11

Создание демки специально для HABR — Часть 3

Блог компании RUVDS.com Ненормальное программирование *Assembler *Демосцена Старое железо
Tutorial
Наконец-то мы подобрались к финальной части большой саги о создании демки для ПЭВМ «Микроша». В предыдущих первой и второй части я реализовал заходник, само видео вращения, и понял, как сделать звук. Теперь осталось всё свести воедино, исправить некоторые недочёты и добавить нормальную музыку. Но, как обычно, дьявол кроется в мелочах.
Читать дальше →
Всего голосов 68: ↑67 и ↓1 +66
Просмотры 3K
Комментарии 23

ОС с нуля: Глава 1, Часть 1 — Загрузчик

Assembler *
Tutorial

Хай Хабр! Это серия статей по написанию моей ОС с нуля. Я лютый фанат ретропрограммирования, поэтому я мгновенно забуду про существование EDК. Просьба не писать комменты по типу "BIOS давно устарела где UEFI?". Пишу это просто чтобы было, что почитать вечером и порелаксить. Спасибо.

Читать
Всего голосов 28: ↑27 и ↓1 +26
Просмотры 11K
Комментарии 58

Создание демки специально для HABR — Часть 2

Блог компании RUVDS.com Ненормальное программирование *Assembler *Демосцена Старое железо
Tutorial

В предыдущей части мы только начали входить во вкус создания демки, как статья неожиданно закончилась на самом интересном месте. Не буду сильно томить и продолжу описывать свой квест по созданию этой интересной программы. Борьба за размеры памяти, задержки, звук, всё в этой серии.
Читать дальше →
Всего голосов 76: ↑75 и ↓1 +74
Просмотры 4.3K
Комментарии 33

16-битная ОС на fasm + Cи. Часть 1

Assembler *Системное программирование *C *
Из песочницы

Данная статья в большей степени является не руководством и не мануалом, а просто моими заметками. Идея этой статьи собрать множество особенностей и знаний в одно целое, надеюсь, она кому-то пригодится =)

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Просмотры 7.5K
Комментарии 19

Создание демки специально для HABR — Часть 1

Блог компании RUVDS.com Ненормальное программирование *Assembler *Демосцена Старое железо
Tutorial

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

Здесь я хочу поделиться «прохождением» этой «игры», под названием Демка для ПЭВМ «Микроша». В процессе чтения статьи может показаться, что всё просто и очевидно. Это всё так, когда есть документация и описание всех подводных камней. Когда каждый подводный камень ищешь сам, то это всё превращается в невероятно сложный квест.
Читать дальше →
Всего голосов 107: ↑106 и ↓1 +105
Просмотры 6.5K
Комментарии 24

Контроль переполнения. Как уменьшить длину, увеличивая путь

Программирование *Совершенный код *Assembler *Компиляторы *

Я уже упоминал, каким неприятным сюрпризом оказалось исключение команды INTO из системы команд x86-64, когда я переводил компилятор на эти команды. Давайте разберемся, нужна ли сейчас команда, которая отвечала за контроль целочисленного переполнения еще со времен процессора 8086.

Кстати, а чего вообще прицепились к этому целочисленному переполнению? И зачем для него иметь еще какую-то отдельную проверку? Например, ну, нет же никакой отдельной команды INTD проверки деления на число с нулевым значением.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 2K
Комментарии 7

Динамический анализ инструкций с помощью Intel Pin

Assembler *Системное программирование *Реверс-инжиниринг *
Tutorial

Исследование и изменение исполняемого кода в процессе работы программы – что может быть интересней? Intel Pin – фреймворк для динамической бинарной инструментации (Dynamic Binary Instrumentation, DBI) исполняемого кода. Этот фреймворк обладает широкими возможностями по анализу и модификации кода. Мне было очень интересно посмотреть вживую на доступные в нем функции по анализу отдельных инструкций. И наконец подвернулась такая возможность.

В статье будет рассмотрено получение адреса перехода для инструкции jmp, перехват вызова функции, находящейся за таблицей инкрементальной линковки (Incremental Linking Table, ILT) – и все это средствами Pin.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1K
Комментарии 0

Вклад авторов