相关疑难解决方法(0)

如何在 MASM 中为近直接相对调用/jmp 编写绝对目标

为了使call绝对地址正常(接近直接相对),在您编写的 NASM 或 AT&T 语法中call 0x1234567,汇编器 + 链接器负责计算 arel32以从链接器放置call指令的任何位置到达该目标。

例如,在 Linux 上用 将其组装成静态 64 位 ELF 可执行文件yasm -felf64 foo.asm && ld foo.o -o foo,然后用 反汇编objdump -drwC -Mintel foo为您提供:

foo:     file format elf64-x86-64
Disassembly of section .text:
0000000000400080 <_start>:
  400080:       e8 e2 44 e3 00          call   1234567 <_end+0xc344df>
Run Code Online (Sandbox Code Playgroud)

链接器根据目标文件中的重定位计算了0x1234567从到达的正确 rel32 :0x400080+5R_X86_64_PC32

  0:   e8 00 00 00 00          call   5 <_start+0x5>   1: R_X86_64_PC32        *ABS*+0x1234563
Run Code Online (Sandbox Code Playgroud)

你如何让 MASM …

x86 assembly masm call visual-c++

5
推荐指数
1
解决办法
708
查看次数

标签 统计

assembly ×1

call ×1

masm ×1

visual-c++ ×1

x86 ×1