SPU指令指针

时间:2012-09-21 07:00:05

标签: ps3 spu

我一直在搜索整本手册,但我无法找到指针指针。我需要这个用于我正在编写的SPU程序。也许它有不同的名字?谁能告诉我如何访问要执行的指令的地址?在此先感谢您的帮助。 更新:显然它被称为程序计数器,但我如何从我的SPU程序中访问它?

2 个答案:

答案 0 :(得分:1)

如果您只想获取指令指针,可以在汇编中执行:

brsl r<n>, .+4

这会将下一条指令的地址加载到寄存器r<n>中。

答案 1 :(得分:0)

似乎您可以通过执行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程序应该开始执行。   如果entry的值是SPE_DEFAULT_ENTRY,则为入口点   SPU主程序从加载的SPE图像中获得。这是   通常是初始化函数crt0的本地存储地址   (参见Cell Broadband Engine Programming Handbook,Objects,Executables,   和SPE加载)。

     

输出:SPU停止时的SPU指令指针   执行,即下一条指令的本地存储地址   那将会被执行。

     

例如,可以使用此参数来允许SPE程序   “暂停”并从PPE线程请求一些操作,例如,   执行I / O操作。在这个PPE方面的行动之后   完成后,您可以继续调用spe_context_run的SPE程序   再次不改变条目。