首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在gnu中获得这些内存地址?

是否有可能在gnu中获得这些内存地址?
EN

Stack Overflow用户
提问于 2014-04-13 01:17:55
回答 1查看 303关注 0票数 0

基本上,我正在尝试使用gnu-prolog来模拟C指针取消引用。

以下是代码:

Prolog

代码语言:javascript
复制
:-foreign(fun(+integer,-integer)).

% p = &b;
testfun(Var, Val) :- fun(Val, Var).

main :-
A is 1,
testfun(A, P),
write(P),

C:

代码语言:javascript
复制
#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中获得变量的内存地址(例如,在这种情况下,它是A的地址,而不是ptr的地址)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-13 16:18:41

Gnu很容易被编写C例程和链接扩展成一个可执行文件。但是,如果您试图“模拟内存引用关系”,那么我怀疑对实际内存地址函数进行黑客攻击是否有用。

相反,正如@潜伏者所暗示的,您可能希望“模拟”一个内存/计算机体系结构,然后是一些类似C的语言,在其上“执行”。这听起来有点野心勃勃,但是Prolog中CPU的仿真已经被问到了,最近在这里也被问到了,还有潜伏者的回答。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23038033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档