SPU Инструкция Указатель
Я искал все руководства и не могу найти ни одного упоминания об указателе инструкций. Мне это нужно для программы SPU, которую я пишу. Может быть, у него другое имя? Может кто-нибудь сказать мне, как я могу получить доступ к адресу инструкции, которая должна быть выполнена? Заранее спасибо за помощь. ОБНОВЛЕНИЕ: Возможно, он называется счетчиком программ, но как я могу получить к нему доступ из моей программы SPU?
2 ответа
Если вы просто хотите получить указатель на инструкцию, вы можете сделать это в сборке:
brsl r<n>, .+4
Это загружает адрес следующей инструкции в регистр r<n>
,
Похоже, вы можете получить следующую инструкцию, выполнив spe_context_run
операция:
int spe_context_run(spe_context_ptr_t spe, unsigned int *entry, unsigned int runflags, void *argp, void *envp, spe_stop_info_t *stopinfo)
entry
Вход: точка входа, то есть начальное значение указателя инструкций SPU, с которого должна начинаться выполнение программы SPE. Если значением записи является SPE_DEFAULT_ENTRY, точка входа для основной программы SPU получается из загруженного изображения SPE. Обычно это адрес локального хранилища функции инициализации crt0 (см. Справочник по программированию Cell Broadband Engine, Объекты, Исполняемые файлы и Загрузка SPE).
Вывод: указатель команды SPU в момент, когда SPU прекратил выполнение, то есть адрес локального хранилища следующей инструкции, которая должна была быть выполнена.
Этот параметр можно использовать, например, для того, чтобы позволить программе SPE "приостановить" и запросить какое-либо действие из потока PPE, например, выполнить операцию ввода-вывода. После того, как это действие на стороне PPE было завершено, вы можете продолжить программу SPE, снова вызывая spe_context_run без изменения записи.