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