代码之家  ›  专栏  ›  技术社区  ›  Narek

汇编指令地址

  •  0
  • Narek  · 技术社区  · 15 年前

    为什么每次我反汇编相同的.exe文件时,相同的指令都在相同的地址中?那是什么地址(RAM?硬盘驱动器?虚拟?)?

    2 回复  |  直到 12 年前
        1
  •  1
  •   danben    15 年前

    基本思想是,为了允许程序的可移植性和允许不同的程序在同一个系统上运行而不发生冲突,您所看到的基本上就是相对地址,当程序运行时,操作系统将其转换为实际地址。

    您需要有地址的原因是为了引用其他指令(如跳转)的地址的指令。

        2
  •  0
  •   L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳    15 年前

    没有理由。这就是O/S上的可执行/链接格式决定如何工作的原因。每个体系结构都是不同的,例如,即使在x86和x64上,也可以在随机虚拟地址加载可执行文件,或者每次都在同一个地址加载可执行文件。反汇编程序要么给出文件中的偏移量,要么给出一个虚拟地址,它只是运行时确定的基地址+文件偏移量,可能还有一个节偏移量。这是 高度地 建筑依赖,所以我不能给出具体的答案…