首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用运动目标计算偏移量的最佳方法

用运动目标计算偏移量的最佳方法
EN

Stack Overflow用户
提问于 2014-06-19 17:08:10
回答 1查看 50关注 0票数 2

似乎应该有一个标准化的解决方案。基本上,问题是,我想要能够计算,我是应该使用近跳还是远跳。如:

代码语言:javascript
复制
jump_to_near:
  ; ... lots of ops ...

jump_to_near:
    e9 24 ff ff ff          jmpq   1f22 <jump_to_far>
    eb f9                   jmp    1ff9 <jump_to_near>

近跳操作码似乎是两个字节,而远跳操作码似乎是五个字节。问题是,如果跳转标签是在(实际操作码)之后出现的,我如何知道使用哪一个呢?是否有一个标准化的算法来计算像这样的严格依赖关系的东西,特别是在这种情况下,可能会有很多跳转,其中一个操作码大小的改变可能会影响其他跳转。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 17:21:57

我并不是说这是唯一的解决方案,但对于我编写的特定领域语言的几个编译器,我成功地使用了以下策略:

对于所有的前向跳跃,最初假设可以通过短距离跳跃达到目标。

稍后,在背部修补过程中,如果目标最终无法通过短距离跳转,则将该跳跃标记为需要近距离跳转,并为所述例程重新启动代码。

-

也可以(是的,我实际上已经这样做了)发出所有的近跳(长形式),然后记录任何需要在块中修复的信息,以防您稍后发现您可以并希望将特定的跳转从最近的形式转换为简短的形式。

-

第一种策略的实施通常要简单得多。

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

https://stackoverflow.com/questions/24312439

复制
相关文章

相似问题

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