문제

기본적으로 나는 GNU-PROLOG를 사용하여 C 포인터 역 참조를 시뮬레이션하려고합니다.

여기에 코드가 있습니다.

프롤로그 c :

#include <gprolog.h>
#include <string.h>

PlBool fun(int ptr, int* res){
    *res = &ptr;                  // this is wrong
    if(res==NULL){
      return PL_FALSE;
    }else{
      return PL_TRUE;
    }
}
.

PTR은 스택의 임시 변수 일뿐이며 메모리가 호출 된 후에 할당 해제되기 때문에 기본적으로 잘못되었습니다.

그래서 내 질문은 GNU PROLog에서 변수의 메모리 주소를 가져올 수 있습니다 (예 :이 경우,이 경우, PTR 주소가 아닌 A 주소)?

도움이 되었습니까?

해결책

GNU Prolog는 C 루틴 쓰기 및 링크 그들을 실행 파일로그러나 "메모리 참조 관계를 시뮬레이션"하려는 경우 실제 메모리 주소 기능을 해킹하는 것이 유용 할 수 있습니다.

대신 @Lurker가 제안한 것처럼 메모리 / 컴퓨터 아키텍처를 "시뮬레이트"한 다음 "실행"을 "실행"할 수 있습니다.조금 야심적이지만, 프롤로그에서 CPU의 시뮬레이션 이미 묻는 질문을 받았습니다.Lurker가 답변으로 귀하에 의해 물었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top