Принципы кодирования инструкций Intel x86(-64) или "ехал префикс через префикс"

Введение

С давних пор меня интересовало то как процессоры Intel x86 кодируют свои инструкции.
Будучи в детстве владельцем клона ZX Spectrum я уже тогда сталкивался с таблицами кодов инструкций его процессора Z80, как например тут: clrhome.org/table/
В таком виде очень хорошо просматривается принцип кодирования этих инструкций — наглядно видно как они упорядочены и по каким битам раскиданы.
Но вот для x86 таких таблиц как то не удавалось найти, а то как эти коды пояснялись в руководствах от самого Intel было несистематизировано и поэтому не воспринималось.
Однако пару месяцев назад я наконец то наткнулся на табличный вид однобайтовых инструкций от i8086 до i386, поразглядывал его и проникся тем что тут и как кодируется.
Более того — в процессе этого обзорного ознакомления я проникся еще тем как эволюционировала система команд x86 с поколениями процессоров и решил вкратце эти вехи законспектировать тут. Это ни в коем случае не полное справочное руководство, но скорее обзорное знакомство вместе с историческим экскурсом которое возможно поможет кому то быстро понять основные принципы кодирования инструкций x86 перед более углубленным изучением по таблицам.

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

Chaos Constructions 2021 party report



— вы организовываете пати?
— нет, только показываем
— кросивое...


2020-й год по всем хорошо известным причинам выдался максимально сложным — пандемия, локдауны, отмены патей или переносы в онлайн. Тем временем, сиквел 2021-й подкрался незаметно, а вместе с ним наконец-то стало возможным встретиться вживую, пообщаться, обменяться опытом (или напитками :), ну и конечно же попативать и поотрываться.

В этом году я смог попасть на Chaos Constructions 2021 в Питере, и могу сказать лишь одно — несмотря на все неурядицы и самые худшие ожидания, пати однозначно удалась! А чтобы окончательно убедить всех вас, дорогих софасценеров, хотелось бы поделиться своеобразным отчетом со своими впечатлениями и мыслями :)

Как обычно, дисклеймер — под катом очень много фоток, поэтому осторожно, трафик!


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

Мой виртуальный 16-битный "компьютер мечты" - SimpX

Исходники: github.com/aa-dav/SimpX
Онлайн-версия: alxhost.tk/SimpX/SimpX.html (первая загрузка будет долгой, но потом закешируется)
В веб-версии рекомендую сразу нажать меню View->Set 400% чтобы выправить соотношение сторон.
Выбираем в левом списке редактора файлы test0x.asm и нажимаем меню Emulator->Compile and run чтобы увидеть результат.
Если активирована не английская раскладка клавиатуры — ввод с кнопок может не работать (это важно для последних тестов).
Так же еще замечу, что в веб-версии в коде могут некорректно отображаться табуляции — это некритично и вызвано разным отношениям к пикселям в среде Qt в stand-alone и wasm вариантах. В stand-alone всё визуально корректно.
Описание процессора — Simpleton (4) и его ассемблера уже было.

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

Демосцена

"… особую пикантность придаёт тот факт, что всё это по сути бессмысленно..."
/ sq/skrju /


из демо 'We are demo' для Commodore 64, 2020 год)

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

Слово «демосцена» («demoscene») мало того, что не переводится на русский язык, но даже и на английском имеет не вполне очевидный смысл. Если со словом «demo» всё интуитивно понятно — оно происходит от слова «demonstration» («демонстрация»), то со словом «scene» всё куда сложнее. Своим появлением оно обязано вовсе не театру, как могло бы показаться, а возникшей в конце 1970-х практике нелегального распространения и взлома программного обеспечения, главным образом — компьютерных игр.

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

Бесконечные ZX Spectrum-демо на коленке



Несколько лет назад у меня возникла идея создать некий сервис, где будут круглосуточно крутиться спектрумовские демo. Хотелось, чтобы была возможность в любой момент просто воткнуть канал и там постоянно что-то транслировалось бы. Поднимать сервак дома, конечно же, никакого желания не было, потом вылезли какие-то другие бытовые вопросы, ну и в итоге я благополучно забил на это дело.

Пару месяцев назад я случайно наткнулся на статью одного человека, который запускал круглосуточную трансляцию на YouTube по другой тематике, и меня эта идея снова зацепила. Что в итоге было сделано: взят нужный VPS, развёрнут весь необходимый софт, зарегистрирован канал Speccy247, отобраны первые 50 штук демо, трекмо и иже с ними, а также пару игр с интересными на мой взгляд интрухами. Настроен UnrealSpeccy, который каждые 300 секунд запускает следующую программу в плейлисте. Вот такой был механизм с самого начала :)

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

Обзор zxgfx compo #4 (освоение космического пространства + ограниченная палитра)



В этом году исполняется 60 лет со дня появления первого космонавта, и по этому случаю четвертое компо тематически было приурочено к данному событию. Космос – это одно из самых любимых популярных тем для художников-фантастов, их манит загадочность, неизведанность и романтика покорения. С некоторыми работами в данном направлении можно ознакомиться на странице zxart.ee по тэгу «космос». Сегодня эта страница пополнится еще рядом замечательных работ на данную тему.

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

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

Обзор zxgfx compo #3 (персонаж мультфильма или собственный персонаж, нарисованный без дизеринга)



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

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