До того, как я создал следующий вопрос, я прочитал несколько похожих вопросов по SO, но я не нашел ответа на свой вопрос.
Предположим, что у меня есть следующий поток битов 010001 01000 1010100 01100
010001 -> представляет команду add arg1, arg2, arg3
arg1: 01000 -> начинается с 0, поэтому arg1 будет представлять номер регистра 1000 с прямым порядком байтов, поэтому индекс номера регистра равен 1
arg2: 1010100 ->так что это будет аргумент памяти 1-01-0100 01 является двухбайтовым доступом,
arg3: 01100 -> третий аргумент снова начинается с 0, поэтому это аргумент регистра: 0-1100 это кодирует регистр 3.
Как видите, код операции или аргументы инструкции не выровнены по границе байта.
Например. как вы можете видеть выше - код операции занимает 6 бит, а остальные 2 бита из байта являются частью первого аргумента.
Но другой код операции может брать 3 или 5 битов и т.д. из байта, поэтому длина кода операции не является фиксированной.
Существует ли такая же ситуация, например, на x86?
Я могу справиться с этим, используя маски или биты, но мне интересно, есть ли полезная модель, которая может помочь сделать это лучше?