我想为我的 postscript 解释器添加一个快速启动功能,这样它就可以绕过冗长的(-ish)初始化例程并立即开始执行用户程序。因此,我将所有解释器内存设计为包含在内存映射文件中。进入该内存的所有内部“指针”实际上都是从基指针到内存文件开头的整数字节偏移量。所以,我想我已经在设计中为此做好了准备。
我关心的是包含函数指针的运算符表。我想 C 本身在这方面没有提供任何保证,但是我可以假设指向静态链接函数的函数指针对于同一可执行文件的单独运行将保持不变吗?这是否取决于虚拟内存的存在?POSIX 是否解决了这个问题?
使用 Cygwin,我似乎每次都得到相同的指针值。但是,测试永远不能证明没有错误。
编辑:在我的辩护中,效率并不是这里唯一的目标。封装内存使用是一个更大的目标(以快速启动作为奶酪)。封装对调试也有很大帮助。