Декодирование кодов операций разной длины (SPU ISA)

Я создал дамп 32-битных инструкций в шестнадцатеричном формате из реализованного мной ассемблера. Подмножество дампа инструкций показано ниже:

введите здесь описание изображения

Коды операций для инструкций имеют длину 4, 7, 8, 9 и 11. Они всегда являются первыми битами в инструкции. У меня возникли проблемы с пониманием того, как я буду декодировать инструкции, если коды операций имеют разную длину?

Например: когда я читаю одну инструкцию, как мне узнать, сколько битов я должен прочитать для кода операции?

Вот изображение форматов инструкций: format

Спасибо


person Anviori    schedule 08.04.2019    source источник
comment
Откуда мы можем знать? Я предполагаю, что в кодах операций есть логика, иначе ни один процессор не сможет их декодировать. Может быть, если первые 3 бита 111, длина 7 и так далее. Но с той информацией, которую вы даете, невозможно дать вам какой-либо совет.   -  person Alain Merigot    schedule 08.04.2019
comment
Все остальные поля в инструкциях являются операндами или непосредственными. В инструкции нет никакой дополнительной информации, кроме опкода. Я добавил изображение форматов инструкций.   -  person Anviori    schedule 08.04.2019
comment
Необходимо смотреть описание инструкции. Например, при быстром просмотре документа Sony я заметил, что все 10-битные инструкции кода операции начинаются с 001. Возможно, для других инструкций существует аналогичная логика.   -  person Alain Merigot    schedule 08.04.2019
comment
Да, я пытался найти такую ​​схему. Поскольку наименьший код операции составляет 4 бита, в первых 4 битах каждой инструкции должен быть шаблон; но нет (что я вижу). Некоторые инструкции (с разной длиной кода операции) имеют одинаковые первые 4 бита.   -  person Anviori    schedule 08.04.2019
comment
Есть логика. В противном случае процессор не сможет декодировать инструкции. Попробуйте найти минимальную длину паттерна, которая может определить размер паттерна, и используйте справочную таблицу.   -  person Alain Merigot    schedule 08.04.2019
comment
Я понял это, я разместил ответ. Спасибо за вашу помощь.   -  person Anviori    schedule 08.04.2019


Ответы (1)


Я понял. Я читаю максимальное количество бит кода операции (11) для всех инструкций и игнорирую биты, которые не имеют смысла (т. е. биты, которые не приводят к возможному коду операции).

person Anviori    schedule 08.04.2019