如果你编译,链接并运行这样的东西:
global _start
section .text
_start:
jmp message
proc:
...
message:
call proc
msg db " y0u sp34k 1337 ? "
section .data
答案 0 :(得分:4)
是的,它们被翻译为地址。对于相对或绝对跳跃或远或近跳跃有不同的jmp
指令。汇编程序将选择其中一个(例如,最短的一个)并将助记符(jmp
)转换为相应的机器代码。
他们有相对地址。汇编程序生成一个目标文件,其中包含可重定位代码和数据。它可以通过链接器与其他目标文件组合,最终生成可执行文件。最后的可执行文件有绝对地址 1 。
没有。每个进程都有自己的虚拟地址空间,因此每个进程的第一个地址都是0x00
。可执行文件中使用的地址也是虚拟的,因此它们映射到任意物理地址
此外,显然要求PC有
1 从技术上讲,这不是真的。图片可能为relocated at load time。