2012-09-21 58 views
0

我一直在搜索整個手冊,但找不到一個指令指針。我需要這個用於我正在寫的SPU程序。也許它有不同的名字?任何人都可以告訴我如何訪問要執行的指令的地址?在此先感謝您的幫助。 更新:顯然它被稱爲程序計數器,但我如何從我的SPU程序中訪問它?SPU指令指針

+0

在大多數體系結構中,它被稱爲程序計數器(PC) - 英特爾在這方面的術語中有點不符合標準。 –

+0

非常感謝!這真是令人尷尬,但我只在x86上完成了彙編代碼。 但我還有一個問題:是否有可能讀取它而沒有停止SPU? – user1294986

回答

1

如果你只是想要得到的指令指針,你可以做到這一點在裝配:

brsl r<n>, .+4 

這會將下一條指令的地址到寄存器r<n>

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程序應該開始執行。 如果條目的值爲SPE_DEFAULT_ENTRY,則從加載的SPE映像獲取 SPU主程序的入口點。這通常是初始化函數crt0 的本地存儲地址(參見Cell寬帶引擎編程手冊,對象,可執行文件, 和SPE Loading)。

輸出:當SPU停止執行 時SPU指令指針,即執行的下一條指令 的本地存儲地址。

例如,可以使用此參數來允許SPE程序 「暫停」並請求PPE線程執行一些操作,例如執行I/O操作的 。在此PPE方行動已完成 後,您可以繼續SPE程序再次調用spe_context_run 而不更改條目。

+0

感謝您的回答,但我希望在SPU上執行此操作,而spe_context_run運行上下文並位於PPU上。 – user1294986

+0

啊,所以你正在運行*一個SPU程序,並且想獲得指令指針?請更新您的問題並提及它。 – nneonneo

+0

是的。對不起,不清楚。有沒有辦法?從我讀到的指令中,SPU必須被禁用才能閱讀SPU_NPC,但我想在我的SPU程序中閱讀它。 – user1294986