【发布时间】:2011-12-17 20:30:38
【问题描述】:
我想征求意见。我正在使用小型嵌入式 uP。
我想将我的各种函数分配给 myfunctions 结构。如何正确地做到这一点? 然后我想把这个 myfunctions(函数指针结构)放到特定的内存地址(例如 0x1000)。实现这一目标的最佳程序是什么?
typedef void (*fptr)(void);
typedef struct FCN_IMAGE
{
fptr fcn1;
fptr fcn2;
fptr fcn3;
} FUNC_T;
FUNC_T myfunctions;
其实应该是跳表吧。
其次,我想从其他程序中读取这个函数指针 - 直接从指定的地址位置(例如 0x1000)。
这意味着第一个代码应该将函数指针的结构分配给特定的内存位置,其他独立的代码应该从特定的内存中读取这个表。这两个程序之间的互连应该是
#define FCN_BASE_ADDRESS (0x1000)
任何想法什么是实现它的最佳方法?
附:这将在嵌入式处理器上运行 - 而不是 PC。
【问题讨论】:
-
我认为这将是您的链接器的功能。
-
部分你是对的,但是将函数指针放置到特定的内存位置应该是可以实现的,因此不涉及链接器。
-
例如,我不确定它是否正确:
-
unsigned int volatile * fcn_base = (unsigned short *) FCN_BASE_ADDRESS *fcn_base = ;
-
FUNC_T * myfunctions; *port = myfunctions->fcn1;
标签: function memory pointers embedded