gpt4 book ai didi

assembly - 由 nasm 插入的冗余 DS 段覆盖前缀?

转载 作者:行者123 更新时间:2023-12-01 23:47:03 25 4
gpt4 key购买 nike

我正在开发用于教育目的的 x86 反汇编程序。我一直在使用 nasm 来组装不同的指令。

目前我正在研究带有 ModR/M 字节的 16 位寻址形式。 “英特尔 64 位和 IA-32 架构软件开发人员手册:第 2A 卷指令集引用,AM”(我认为我的版本已经过时,但此信息应该仍然适用)指出“默认段寄存器是 SS,有效地址包含BP 索引,其他有效地址的 DS”。

因此,如果我正确理解这一点,以下说明应该完全相同:

mov [bx], eax
mov [ds:bx], eax

但是,当我使用 nasm 编译上述指令并查看生成的字节时,我得到以下信息:
67 89 07      mov [bx], eax
3e 67 89 07 mov [ds:bx], eax

我理解所有字节的含义,但我不明白为什么 nasm 会在第二条指令中添加 ds 段覆盖前缀 (3e)。对我来说似乎没有必要,因为 ds 已经是默认段。

我的问题是:我在这里遗漏了什么还是不需要 ds 段覆盖前缀?

最佳答案

如果您输入 mov [ds:bx], eax组装者应该组装 mov [ds:bx], eax . NASM 不是(也不应该!)一个可以更正您的输入的优化汇编器。也许您恰好需要四个字节的空间来修改程序代码。

关于assembly - 由 nasm 插入的冗余 DS 段覆盖前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28610885/

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