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

Варианты:

байт_операндов
операнды
коды_операндов

В википедии про него только две страницы:
https://en.wikipedia.org/wiki/ModR/M
английская и китайская японская.

японцы не суверенны и допускают буквы высшей расы среди своих презренных иероглифов.

Это о многом говорит.

байт состоит из трёх полей,
байт состоит из битов,
поля состоят из битов.
поля имеют имена, эти имена тоже надо придумать.

поле_режим
операнд_приёмник
операнд_источник
?

поле_режима, поле_приёмника, поле_источника ?
код_режима, код_регистра, код_регистра_или_памяти ?

Битам имена не нужны, у них номер в поле, либо номер в байте.
Но сами биты как уникальные объекты нужны, так как
и поля и байт должны ссылаться на одни и те же биты.
Но это в философском смысле "объекты", а не в программистском.

То, что это "байт", это вообще, возможно, лишняя информация.
Может надо именовать
"область_операндов", "область_кода_приёмника", "область_кода_истоника"
но можно оставить слово "область" для объединения полей из разных байтов в общие структуры,
есть же ещё биты в регистре Rex.W, и те биты хорошо бы тоже присоединить к "области".

То, что биты и поля образуют байт - это факт.
Может быть и не страшно, что этот факт находит отражение в именах?
А может всё-таки не должен? (для общности, единства и т.д.) Ведь архитектуры процессоров бывают разные.

Хватит ли двух уровней классификации - "поле" и "область", или надо делать сразу рекурсивно,
говорить, что поля состоят из других полей и битов?

Отредактировано Лис (2024-08-23 18:23:16)