某些内联汇编在64位模式下不起作用?

时间:2013-03-17 15:22:05

标签: c++ assembly x86 x86-64

我在64位模式下编译的技术优势是什么,而不是32位?我们是在谈论我的应用程序能够使用的RAM吗?我可以使用CPU寄存器的大小吗?

我问,因为我正在读这个问题:

ICC inline assembler doesn`t like push/pop

一个人无法获得内联汇编指令POP进行编译,因为他在64位模式下进行编译而POP仅适用于32位寄存器(至少,这就是我阅读答案的方式) )。

如果你在64位模式下编译,我无法相信你不能使用POP汇编命令?

我的主要问题是 - 如果你选择64位编译 - 这是否意味着你不能使用“常规”内联汇编指令?

1 个答案:

答案 0 :(得分:2)

64位模式下的

pushpop不能有32位操作数,只有16位或64位,pop仅适用于32位寄存器。一般来说,很多代码在32位和64位模式下的工作方式相同,但是一些很少使用的指令(十进制数学,与分段有关的指令)已完全从64位模式中删除。