【问题标题】:jmp in assembly汇编中的 jmp
【发布时间】:2012-04-20 20:42:59
【问题描述】:

如果有人能向我解释一下“:”在 jmp 指令中的用途,我将不胜感激,以下是来自 wiki 的 wiki

JMP 0x89AB, I know that this one is to jump to that position 
JMP 0xACDC:0x5578 what is that?

【问题讨论】:

    标签: assembly


    【解决方案1】:

    这是一个很大的跳跃。真实模式和保护模式的含义不同:

    • 实模式→它有一个段和一个偏移量,跳转目标是segment * 16 + offset
    • 受保护模式 → 它有一个选择器,它指向 GDT(全局描述符表,用于整个系统)或 LDT(本地描述符表,每个进程)中的描述符。跳转目标取决于描述符类型(并且需要有足够的权限):
      • 代码段:在所描述的段内跳转到offset
      • 调用门、任务门、TSS:offset 被忽略,并执行适当的操作(例如:任务切换)。

    【讨论】:

      【解决方案2】:

      如果不参考 wiki,我只能猜测,但我敢说这与带有“分段”地址空间的 8088/86/286/386 处理器有关。

      【讨论】:

        【解决方案3】:

        segmented memory architecture 的基于 x86 的处理器工作。

        基本上,内存使用两个部分来寻址。段地址和偏移地址。 ':' 之前的部分是段地址,':' 之后的部分是偏移地址。

        【讨论】:

          【解决方案4】:

          0x1234:0x5678 样式地址是分段地址。这意味着0x1234 * 0x10 + 0x5678。你给出的例子是0xB2338

          【讨论】:

            【解决方案5】:

            我猜 0xACDC 是代码段地址,0x55​​78 是代码内部的偏移量。

            【讨论】:

              猜你喜欢
              • 2015-05-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-09
              • 1970-01-01
              • 2019-04-17
              • 1970-01-01
              • 2016-11-01
              相关资源
              最近更新 更多