Можно ли получить эти адреса памяти в GNU Prolog?
-
21-12-2019 - |
Вопрос
в основном я пытаюсь моделировать CONECTER DERAFECTER, используя GNU-Prolog.
Вот код:
Пролог
:-foreign(fun(+integer,-integer)).
% p = &b;
testfun(Var, Val) :- fun(Val, Var).
main :-
A is 1,
testfun(A, P),
write(P),
.
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 - это просто переменная TEMP на стеке, и его память будет рассмотрена после вызова развлечения.
Поэтому мой вопрос, возможно ли получить адреса памяти переменной в GNU Prolog (например, в этом случае, это адрес A, а не адрес PTR)?
Решение
GNU Prolog довольно легко продлить с помощью Написание рутин и связывание их в исполняемый.Но если вы пытаетесь «имитировать ссылочное отношение памяти», то мне сомневается, что взлом в реальной функции памяти будет полезен.
Вместо этого, как показывает @lurker, вы, вероятно, хотите «имитировать» память / компьютерную архитектуру, а затем какой-то какой-то язык, который «выполняет» на это.Это звучит немного амбициозным, но Моделирование процессора в прологе уже спросили уже, и Совсем недавно здесь Спросил вас, с ответом LURKER.Не связан с StackOverflow