gpt4 book ai didi

assembly - ds, es 寄存器

转载 作者:行者123 更新时间:2023-12-01 05:34:01 29 4
gpt4 key购买 nike

我反汇编了某些二进制文件(Linux elf)。
我找到了这个代码:

movsl %ds:(%esi),%es:(%edi)

有两个寄存器“ds”和“es”。
我知道这些被命名为“段寄存器”。
但是,没有像 'mov addr, %es (or %ds)' 这样的行。
这些寄存器指向哪里?

最佳答案

段寄存器由操作系统初始化。对于大多数现代操作系统,它们指向引用整个地址空间的同一段,因为大多数操作系统使用平面内存模型(即无分段)。

不使用的原因只有ds (几乎所有内存访问的默认值)这里是 movs 的操作数是隐含的,在 DOS 时代是有意义的。

在 DOS(实模式)时代,它们得到了实际使用,因为寄存器限制为 16 位,因此地址空间限制为 64K。地址空间 (1M) 被划分为重叠的 64K 段。

关于assembly - ds, es 寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789652/

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