7

经过长时间的高级编程,我只是接触了 x86 指令集的表面。大约 20 年来,我第一次阅读 x86 汇编编程,从我的谷歌搜索中,我迷失了无数的指令集参考;从混合新一代处理器(286、386、486...)的处理器到添加更新的 x86 指令的处理器。更不用说 AMD 的变体了。

由于我计划构建一个引导加载程序,我的第一个想法是完全符合“标准 x86”,但我不知道它在哪里,甚至它是否存在于任何地方。

甚至英特尔文档似乎也遵循相同的路径,就像另一个人所说,“我们需要 x86 指令集标准化,操作码的演变是混乱的”。

高举标准化大旗不是我的主意。我只是想看看路,了解哪里是安全的步行地点。如果有人可以提供帮助,我将不胜感激!

4

2 回答 2

5

从历史上看,x86 一直非常向后兼容。x86-64 已经抛弃了一些非常古老的指令(如 BCD 指令),但这种变化不太可能再次发生(至少在 64 位地址空间转换发生巨大的事情之前不会发生)。

如果您想确保您的代码几乎可以在所有 x86 处理器上运行,请坚持使用 386 指令集(如果您的代码是 32 位)或早期的 x86-64 指令集(如果它是 64 位)。

于 2010-01-11T19:59:11.873 回答
1

引导加载程序在 16 位实模式下执行(尽管您确实可以通过操作数大小前缀访问 32 位寄存器)。获取 386 指令参考,你会很安全。

于 2010-01-11T20:43:03.833 回答