我正在实现游戏0x10c中的an assemblinker for the 16-bit DCPU。
有人向我建议的一种技术是使用“覆盖,就像在Turbo Pascal中一样”,以便在运行时交换代码。
我得到了基本的想法(将覆盖的符号链接到相同的内存,在ref之前交换),但它们的实现是什么?
它是编译器在引用之前插入的函数吗?这是个陷阱吗?覆盖图的数据是存储在覆盖图所在的位置,还是存储在某个大表中?它工作得很好,还是经常坏掉?是否有一个用于汇编的接口来连接覆盖的Pascal (反之亦然),或者它是不兼容的吗?
谷歌基本上没有给我任何信息(除了它是现代Pascal编译器的禁区)。而且,我只有五岁,太年轻了,不可能在它们流行的时候需要它们。
发布于 2012-04-15 05:38:02
每个单元的跳转表,其元素在未装入时指向陷阱(int 3F)。但这是对于较旧的Turbo Pascal/Borland Pascal版本(5/6),较新的版本也支持(286)保护模式,并且它们可能会采用另一种方案。
此方案意味着,当加载覆盖时,不再发生陷阱开销。
我在我的参考资料中找到了这个链接:。还有其他很好的细节,比如如何处理跨越多个覆盖的调用链。
https://stackoverflow.com/questions/10155003
复制相似问题