小编Tia*_*xin的帖子

关于c的静态重定位

目标文件中关于文本部分的每个机器代码都有地址,它将从0到数字.

当链接器链接所有目标文件时,有关指令的地址将发生变化.

我无法看到链接器是否会逐个读取有关文本部分的指令以更改每个指令地址.

Disassembly of section .text:

00000000 <_start>:

    0:  bf 00 00 00 00          mov    $0x0,%edi
    5:  8b 04 bd 00 00 00 00    mov    0x0(,%edi,4),%eax
    c:  89 c3                   mov    %eax,%ebx
Run Code Online (Sandbox Code Playgroud)

通过链接

08048074 <_start>:

    8048074:    bf 00 00 00 00          mov    $0x0,%edi
    8048079:    8b 04 bd a0 90 04 08    mov    0x80490a0(,%edi,4),%eax
    8048080:    89 c3                   mov    %eax,%ebx
Run Code Online (Sandbox Code Playgroud)

就像0→8048074等等.

c linker

6
推荐指数
1
解决办法
789
查看次数

为什么在x86文档中找不到insl指令

任何人都可以告诉我以下方法。我听不懂insl指令

static inline void
    insl(uint32_t port, void *addr, int cnt) {
        asm volatile (
            "cld;"
            "repne; insl;"
            : "=D" (addr), "=c" (cnt)
            : "d" (port), "0" (addr), "1" (cnt)
            : "memory", "cc");
    }
Run Code Online (Sandbox Code Playgroud)

x86 assembly gcc

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

标签 统计

assembly ×1

c ×1

gcc ×1

linker ×1

x86 ×1