user786653, возможно, ударил гвоздь по голове с этой ссылкой.
Я знаю, что старый fpu, fpa, использовал интерфейс сопроцессора, и если вы декодируете инструкции с плавающей запятой fpa, я думаю, вы обнаружите, что они совпадают с шаблоном кода операции для универсального сопроцессора (mrc / mcr).
Суть в том, что я не буду разбираться с каждым полем в этой инструкции, некоторые поля, вероятно, не заботятся о сопроцессоре.Процессор ARM и ассемблер не обязательно знают, что вы подключили, и это универсальный способ вставки битовых шаблонов в машинную инструкцию.Вы должны сосредоточиться на конкретном сопроцессоре, с которым вы разговариваете, его TRM, в частности, TRM с соответствующими номерами версий для этой логики (если это возможно, если из ARM), предполагая, что сопроцессор от руки, если это кто-то другой сопроцессор, то используйте их документацию,Надеемся, что поля, используемые каждой операцией в этом сопроцессоре, определены достаточно хорошо.Если они не говорят о том, что означает одно из полей, я предполагаю, что это не важно.Вырежьте и вставьте их строки mrc / mcr в руководство, если они есть, если не в Google, возможно, найдите какой-то уже хорошо используемый код, вырезайте и вставляйте этот шаблон и / или попробуйте разные вещи для неопределенных полей и посмотрите, изменит ли это операцию.
Как правило, хотя определения полей mrc / mcr не заданы в камне, поставщик может создать сопроцессор и делать с этими полями все, что он пожелает.Как и в случае с FPA, возможно, потребуется изменить ассемблер / дизассемблер, чтобы создать новое расширение для набора команд.ядро манипулятора может заботиться о самом регистре ARM. Если для самого интерфейса сопроцессора имеется TRM, я не удивлюсь, если в считывании сопроцессора есть управляющая линия, которая сообщает рычагу о необходимости или не изменять указанный регистр рычага на основе сопроцессора.за рулем этого сигнала.