4

我开始将一个用 C 语言编写的程序移植到 64 位机器上,并用汇编语言编写了几段代码,其中包含用于 32 位机器(如ljmp)的指令。

是否有地方/文档有汇编指令,用于 32 位机器和对应的 64 位机器?如果没有,我在哪里可以找到列出 32 位和 64 位机器的所有指令的文档?


很明显,我是这种情况的新手。让我们澄清一些观点。

我在早期移植操作系统。它是在考虑 x86 机器的情况下编写的。现在,我希望它在 x86_64 上运行。

它是在考虑了 UNIX 的 Linux 机器中编写的。我几乎可以肯定原作者是在英特尔机器上编写的。我也在英特尔,但我也想在 AMD 上运行操作系统。

使用的编译器是 gcc。

4

2 回答 2

3

首先阅读:http: //x86asm.net/articles/x86-64-tour-of-intel-manuals/index.html

然后在此处下载指令集参考:http: //developer.intel.com/products/processor/manuals/index.htm

于 2009-07-04T23:57:57.300 回答
3

你没有提供任何背景,甚至没有提供 CPU 的类型,但我建议你也许应该把这个 64 位端口作为重新考虑使用汇编语言的机会。虽然它肯定有它的位置,但我建议在 C++ 中重新编码例程,并对编译器的优化输出进行基准测试,看看它是否真的更慢。在很多情况下,它不会。

于 2009-07-05T03:35:01.030 回答