2012-09-21 10 views
0

전체 매뉴얼을 조사 중이며 명령어 포인터에 대한 언급은 하나도 없습니다. 필자가 작성한 SPU 프로그램에이 기능이 필요합니다. 어쩌면 다른 이름일까요? 아무도 내가 실행할 명령의 주소에 어떻게 접근 할 수 있는지 말해 줄 수 있습니까? 귀하의 도움에 미리 감사드립니다. 업데이트 : Apperantly 그것은 프로그램 카운터라고 불리지 만, 어떻게하면 내 SPU 프로그램 내에서 액세스 할 수 있습니까? 당신이 spe_context_run 작업을 실행하여 다음 명령을 얻을 수 있습니다처럼SPU 명령어 포인터

+0

대부분의 아키텍처에서 이것은 프로그램 카운터 (PC)라고 불립니다. 인텔은이 점에 관해서는 명명법에 약간의 비 순응 적이라고합니다. –

+0

감사합니다. 이것은 정말 당혹 스럽지만 x86에서 어셈블리 코딩 만했습니다. 하지만 다른 질문이 있습니다. SPU를 중지하지 않고 읽을 수 있습니까? – user1294986

답변

1

, 당신은 어셈블리를 수행 할 수 있습니다

brsl r<n>, .+4 

이 레지스터 r<n>에 다음 명령어의 주소를로드합니다.

0

이 보인다 :

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 (셀 광대역 엔진 프로그래밍 핸드북, 객체, 실행 파일, 및 SPE로드 참조)의 로컬 저장소 주소입니다.

출력 : SPU가 실행을 중단 한 시점의 SPU 명령 포인터, 즉 다음 명령의 로컬 저장소 주소 이 실행되었습니다.

이 매개 변수는 예를 들어 SPE 프로그램이 을 "일시 중지"하고 PPE 스레드에서 어떤 작업을 요청할 때 사용할 수 있습니다 (예 : ). I/O 작업을 수행합니다. 이 PPE 측 작업이 수행 된 후 이 변경되면 spe_context_run 을 다시 호출하여 SPE 프로그램을 계속 입력 할 수 있습니다. 방금 명령 포인터를 얻고 싶은 경우에

+0

답장을 보내 주셔서 감사합니다.하지만 spu_context_run이 컨텍스트를 실행하고 PPU에있는 반면 SPU에서는이 작업을 수행하고 싶습니다. – user1294986

+0

아, SPU 프로그램을 * 실행 중이며 명령 포인터를 가져 오시겠습니까? 질문을 업데이트하고 언급하십시오. – nneonneo

+0

예. 죄송합니다. 방법이 있습니까? 지시로부터 읽은 것으로부터, SPU_NPC를 읽어 내기 위해서는 SPU를 무효로 할 필요가 있습니다 만, SPU 프로그램 내에서 읽고 싶습니다. – user1294986