|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
Хочу научиться писать без мнемонических команд типа mov, а сразу машинными кодами30.05.2020, 10:26. Показов 7950. Ответов 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
|
||
|
3129 / 1719 / 273
Регистрация: 19.02.2010
Сообщений: 4,511
|
||
| 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
|
|||||||
|
3129 / 1719 / 273
Регистрация: 19.02.2010
Сообщений: 4,511
|
||
| 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 | |
|
Выполнить действия над машинными кодами чисел Выполнить поразрядные логические операции над машинными кодами Хочу научиться писать хорошие сайты, но не знаю с чего начать. Подскажите, направьте,расскажите о своем опыте!
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Альцгеймер и колоссальный объем вычислений
Programma_Boinc 08.08.2026
Альцгеймер и колоссальный объем вычислений
Сейчас по направлению болезни Альцгеймера идет колоссальный объем вычислений.
Это один из главных приоритетов проекта.
Такой массовый наплыв задач. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|