Можно ли получить эти адреса памяти в GNU Prolog?

StackOverflow https://stackoverflow.com//questions/23038033

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top