装配说明地址

时间:2010-06-14 14:49:03

标签: assembly disassembly virtual-address-space

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

2 个答案:

答案 0 :(得分:1)

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

您需要拥有地址的原因是有关引用其他指令(如跳转)的地址的说明。

答案 1 :(得分:0)

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

相关问题