gpt4 book ai didi

assembly - Intel 64、rsi 和 rdi 寄存器

转载 作者:行者123 更新时间:2023-12-02 16:07:22 33 4
gpt4 key购买 nike

在 Intel x86 64 位架构中,有 rax...rdx 寄存器,它们只是 A...D 通用寄存器。

但也有称为rsirdi的寄存器,它们分别是“源索引”和“目标索引”寄存器。为什么这些寄存器有实际名称(与只有 A 等相比)?
“源索引”和“目标索引”到底是什么意思?是否有一些约定表明这些寄存器应该在特定情况下使用?

最佳答案

这些寄存器最初隐式地用于重复指令,例如 MOVSB,它将一个字节从 DS:SI (DataSegment:SourceIndex) 复制到 ES: DI(ExtraSegment:DestinationIndex),当时的16位计算机在实模式下具有分段内存。也可作为 16 位寻址模式下的索引寄存器,例如 [bx + si]

现在,这些寄存器例如用于传输 UNIX's x86_64 ABI 中的前两个(整数)函数参数。 ,与他们最初的目的相去甚远。 (另请参阅What are the calling conventions for UNIX & Linux system calls (and user-space functions) on i386 and x86-64)

新的 rXX 64 位寄存器的名称清楚地表明,旧的寄存器名称在这里只是为了熟悉和向后兼容。

但请注意,某些指令仍然仅适用于某些寄存器,例如 rep movsb仅用作 memcpy(rdi, rsi, rcx)is in fact why RDI and RSI were chosen as the first 2 arg-passing registers在 x86-64 System V ABI 中:某些函数使用其前 1 或 2 个参数调用 memsetmemcpy,因此内联 rep movsb/d在这种情况下更便宜。

关于assembly - Intel 64、rsi 和 rdi 寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23367624/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com