首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Turbo Pascal overlays是如何工作的?

Turbo Pascal overlays是如何工作的?
EN

Stack Overflow用户
提问于 2012-04-14 23:56:45
回答 1查看 1.5K关注 0票数 6

我正在实现游戏0x10c中的an assemblinker for the 16-bit DCPU

有人向我建议的一种技术是使用“覆盖,就像在Turbo Pascal中一样”,以便在运行时交换代码。

我得到了基本的想法(将覆盖的符号链接到相同的内存,在ref之前交换),但它们的实现是什么?

它是编译器在引用之前插入的函数吗?这是个陷阱吗?覆盖图的数据是存储在覆盖图所在的位置,还是存储在某个大表中?它工作得很好,还是经常坏掉?是否有一个用于汇编的接口来连接覆盖的Pascal (反之亦然),或者它是不兼容的吗?

谷歌基本上没有给我任何信息(除了它是现代Pascal编译器的禁区)。而且,我只有五岁,太年轻了,不可能在它们流行的时候需要它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-15 05:38:02

每个单元的跳转表,其元素在未装入时指向陷阱(int 3F)。但这是对于较旧的Turbo Pascal/Borland Pascal版本(5/6),较新的版本也支持(286)保护模式,并且它们可能会采用另一种方案。

此方案意味着,当加载覆盖时,不再发生陷阱开销。

我在我的参考资料中找到了这个链接:。还有其他很好的细节,比如如何处理跨越多个覆盖的调用链。

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

https://stackoverflow.com/questions/10155003

复制
相关文章

相似问题

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