|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
Хочу научиться писать без мнемонических команд типа mov, а сразу машинными кодами30.05.2020, 10:26. Показов 8252. Ответов 64
привет
помогите разобраться у стройстве машинных команд процессора Intel хочу научиться писать без мнемонических команд типа mov, а сразу машинными
1
|
||||||
| 30.05.2020, 10:26 | |
|
Ответы с готовыми решениями:
64
Хочу научиться писать на с++ Хочу научиться писать на php Арифметические операции с машинными кодами |
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||
| 04.06.2020, 14:49 | |||
|
Наборы инструкций x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 То есть Пень с дополнительными наборами инструкций MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 и возможностью включить 64 разрядный режим. А Пень - это 386 + инструкции, что появились в 486 + инструкции, что появились в Пне. А 386 - это 286 + 32-разрядный режим. А 286 - это 186 + защищенный 16-разрядный режим. А 186 - это 8086 + пара новых инструкций. Короче говоря, матрешка совместимости сверху вниз. Только почему ты эту матрешку начинаешь изучать с самой внешней ? Добавлено через 1 минуту Обычно изучают что-то базовое и только потом расширения и дополнения. Если 32-разрядных режим, то базовое - это 80386. Добавлено через 11 минут Байты 60..6F у 8086 не были заняты ни подо что. Вот префикс 66 из них. В 80186 байт 6A был занят под push байтовая_константа
1
|
|||
|
Модератор
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 04.06.2020, 18:16 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Во время выполнения каждой инструкции определяется Effective Operand Size.
Он зависит от самой инструкции, префиксов ( или их отсутствия ) и режима работы. Об этом написано в пункте 3.2.3 Operand Sizes and Overrides первого тома AMD64 Architecture Programmer’s Manual Volume 1: Application Programming Добавлено через 8 минут Выше там есть пример, правда по другой, но тоже важной теме. 3.1.2.3 Zero-Extension of 32-Bit Results The following four code examples show how 64-bit, 32-bit, 16-bit, and 8-bit ADDs work. In these examples, “ 48” is a REX prefix specifying 64-bit operand size, and “01C3” and “00C3” are the opcode and ModRM bytes of each instruction (see “Opcode Syntax” in Volume3 for details on the opcode and ModRM encoding). Example 1: 64-bit Add:
В частности, ради префиксов REX выпилила однобайтовые INC и DEC. А десятичные коррекции выпилила совсем. Первые же исполняемые инструкции программы имеют другой смысл в 386:
Все возможные значения REX
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Модератор
|
|
| 05.06.2020, 07:16 | |
|
Обсуждаемый основной вопрос периодически поднимается.
Опкоды команд x86-64 А справочники хороши полнотой, но это всё-таки не учебники. Поэтому нашлись не на русском языке отчёты по лабоработорным работам с картинками. Может быть, кому-то поможет быстрее разобраться. https://www.systutorials.com/b... -encoding/ Также напоминаю, что у любителей поковыряться в линуксе справочник опкодов x32/x64, пусть и не самый свежий, всегда под рукой. ![]() https://git.kernel.org/pub/scm... de-map.txt
0
|
|
|
Фрилансер
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
|
|
| 05.06.2020, 07:42 | |
|
Кстати, наткнулся на днях на любопытное рассуждение:
https://habr.com/ru/company/huawei/blog/503194/ Ругают x86 со стороны организации системы команд
1
|
|
|
Модератор
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 05.06.2020, 18:58 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Может быть, автору просто интересны машины, к которым у него есть доступ.
Добавлено через 2 часа 37 минут первая четверть пространства опкодов стала чуть логичнее
Добавлено через 4 часа 52 минуты x86 как восьмеричная машина https://www.dabo.de/ccc99/www.... o/help.txt https://events.static.linuxfou... -hacks.pdf Типичные трюки разработчиков, которые не знают, в какой среде будет выполняться их код.
1
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||||
| 06.06.2020, 00:34 | ||||
|
Сразу говорю, что мой пост никого не упрекает, за что либо.
Вы вспомнили: Вот знаний этих как раз и нет. Отсюда и вопросы. pcmax, чтобы кодить без мнемоник, Вы должны знать устройство CPU, как он понимает, что именно ему нужно делать, т.е. как работает дэшифратор команд CPU. Любая команда CPU - набор микрокоманд: CPU читая первый байт, анализируя его выполняет некоторую последовательность действий. LD(Zilog) = MOV(intel) Идея префиксов была позаимствована у Zilog (в i8080 - этого не было), наборы команд DD | FD аналогичны, разница, какой регистр используется. IX или IY, а чем, это отличается от использования сегментных регистров(х86) типа: CS : DX Одним словом Качайте Z80-Unit.pdf, читайте, анализируйте, как говорится от простого к сложному.
2
|
||||
|
Модератор
|
|
| 06.06.2020, 07:27 | |
|
Строение инструкций полезно, когда есть необходимость
0
|
|
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
||
| 06.06.2020, 08:39 | ||
|
в процессе разработки тогда что за необходимость
0
|
||
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
||
| 06.06.2020, 12:37 | ||
|
Я вот, например, в годы юзания Борланд С++ Билдера 6 в его инлайн-ассемблере кодировал haddps reg,reg с помощью db. Ибо этот Билдер вышел в 2002г - т.е. раньше, чем в четвёртом пне появились SSE2. И что делать, если захотелось сравнить в реале реализацию горизонтального суммирования (4 флоат-компоненты SSE-регистра в одну) на SSE1 (там для этого требовалось, ЕМНИП, 5 команд) и реализацию на SSE2 (с помощью двух haddps)? А следующий Билдер 2007 - появился уже только лишь во времена расцвета Core 2. Увы, Билдера 7 (парного к Делфи 7) тогда не случилось.
0
|
||
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 06.06.2020, 13:16 | |
|
VTsaregorodtsev,
ну так это ж Borland, его место давно на помойке. Так а в чем проблема было написать модуль на асме и вызывать в с++? Добавлено через 8 минут не знаю, но для тех же AVX, еще до встраивания в процессоры, уже выпустили эмулятор чтобы начинали учится использовать их мощь. Понятно эмулятор работал с SSE
0
|
|
|
Модератор
|
||
| 06.06.2020, 14:17 | ||
![]() Разработчки системы программирования, очевидно, рано или поздно столкнутся с форматом файлов целевой системы. Прошивку принтера с интерпретатором языка описания страниц можно подправить после сборки с помощью традиционного компилятора/ассемблера и компоновщика, если, как в x86, в ISA предумотрены длинные и укороченные переходы. Ассемблер вынужден генерировать переход с запасом к символам в других модулях, а традиционный компоновщик ничего не знает о формате инструкций, и не может поменять инструкцию на более короткую и дешёвую, даже если взаимное расположение модулей в окончательном адресном пространстве это позволяет. Добавлено через 4 минуты Но чаще всего инструкции создаются в современной практике во время бинарной трансляции и генерации инструкций для ускорения интерпретации, как JIT, так и заранее.
0
|
||
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 06.06.2020, 14:46 | |
|
politoto,
понятно, очень даже востребованные знания опкодов. заучить вобще наизусть и нафиг мнемоника. зато настоящим ассеблерщиком в полной мере можно себя называть , писать в блокноте сразу хексами и сохранять в исполняемый, а если работу и за линковщик еще сделать , ну это уже мастерство 80лвл. понтов ради. )
0
|
|
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
||
| 06.06.2020, 17:13 | ||
|
В его библиотеке книги нового формата и уровня только для избранных программистов, такие как "Опкоды для чайников, это просто!", "Сам себе ассемблер" и "Совершенство опкодов". Изучение техники программирования в совершенстве потребовала 10к человеко-часов. Результаты мастерства поразили даже самого опкодера. Проектировать в уме стало проще, не делает отладки и в целом научился обходится вобще без реализации.
0
|
||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|||||||
| 06.06.2020, 17:14 | |||||||
|
Знание опкодов, позволяет, к примеру прыгнуть в средину команды, т.е. одну инструкцию спрятать в другой. Вот Вам примерчик:
0
|
|||||||
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
||
| 06.06.2020, 17:49 | ||
|
Поэтому машкодами вбить пару строк после закомментированных исходных на SSE1 - было быстрее, чем проверять возможности нового tasm'а и возиться с переделкой модулей проекта (в сишном модуле - убрать или закомментировать функцию, в создаваемый ассеблерный - вставить тушку функции и дописать заголовки модуля и функции).
0
|
||
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 06.06.2020, 17:53 | |
|
VTsaregorodtsev,
почему именно tasm? можно обьектный прилинковать собранный другими компиляторами я не спорю , для вашей задачи возможно достаточно и вставить байты, но а если задача посерьезнее стоит и такая хрень у Borland К примеру простое транспонирование матрицы, тоже будете байты вбивать? хотя как задача масштабируется она все равно хреново для распараллеливания
1
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||
| 06.06.2020, 18:20 | ||
![]() Вы пролистайте, любой из разделов форума: вопрос - ответ см. тут, вопрос - решалься тут. У любого ТС - паника, ему даже в голову прийти не может, что аналогичные задания(если не сказать один в один) решаются из года в год, и на форуме есть поиск, вот только правильно задать запрос поиска, он не может, да и порой, даже свой вопрос сформулировать не могут. Приходится как партизанов допрашивать, хорошо, если отвечает, а если упадет в осадок - тупо ждет решение, от тепатов. ![]() Если сравнивать эту тему, с теми, о которых я упомянул выше - нормальная тема, и на неё не ответили - см. тут. Флудили, правда много, но тем не мение - обсуждали.
2
|
||
|
Модератор
|
|||||||
| 07.06.2020, 09:30 | |||||||
|
От мнемоник в виде
Но они могут встречаться в комментариях, ссылках на документацию разработчика ISA, идентификаторах высокоуровнневых объектов, отладочных и дигностических сообщениях и т.д.
0
|
|||||||
| 07.06.2020, 12:37 | |
|
0
|
|
| 07.06.2020, 14:26 | |||
|
Не по теме:
Если ответили и Ваш ответ помог: 1.2. . . . N людям, и они выразили свою благодарность, даже если "благодарочка" прилетела спустя месяц, два, год, два. И Вы это называете :):):)
0
|
|||
| 07.06.2020, 14:26 | |
|
Выполнить действия над машинными кодами чисел Выполнить поразрядные логические операции над машинными кодами Хочу научиться писать хорошие сайты, но не знаю с чего начать. Подскажите, направьте,расскажите о своем опыте!
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|