GNU 프롤로그에서 이러한 메모리 주소를 얻을 수 있습니까?
-
21-12-2019 - |
문제
기본적으로 나는 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가 답변으로 귀하에 의해 물었습니다.
제휴하지 않습니다 StackOverflow