gpt4 book ai didi

assembly - x86 的汇编程序如何获取在 jmp 指令引用后定义的标签地址?

转载 作者:行者123 更新时间:2023-12-02 22:10:11 24 4
gpt4 key购买 nike

例如:

jmp LABEL

... # loads of instructions

jmp LABEL

.... # loads of instructions

LABEL:

.....

如果没有jmp LABEL指令的大小,则无法确定LABEL的地址,因为jmp指令的两种形式(short(2字节)、near(3或5字节))有不同的尺寸。然而,如果不知道 LABEL 的地址,您就无法确定使用哪种表格。

汇编程序是如何解决的?

最佳答案

这取决于您使用的汇编器类型。一个简单的 2 遍汇编器(如 MASM)就可以解决这个问题。他们会选择长跳,您必须显式编写 JMP SHORT LABEL 才能获得短跳。当你猜错时,就会对你发牢骚。

优化的 n 遍汇编器(如 TASM)会自行对其进行排序。它假设短跳转,如果发现无法到达,则重新启动 assembly ,现在进行长跳转。

您可以轻松判断出您的口味。只要看看它生成的代码 list ,如果你得到 5 字节长跳转,那么你就有了 2-pass 类型。

关于assembly - x86 的汇编程序如何获取在 jmp 指令引用后定义的标签地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27552470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com