C++ 一些内联程序集没有';不能在64位模式下工作?

C++ 一些内联程序集没有';不能在64位模式下工作?,c++,assembly,x86,x86-64,C++,Assembly,X86,X86 64,与32位模式相比,64位模式编译me的技术优势是什么?我们是在谈论我的应用程序能够使用的RAM吗?我能使用的CPU寄存器的大小 我问这个问题是因为我在读这个问题: 一个家伙无法编译内联汇编指令POP,因为他是在64位模式下编译的,而且POP只能在32位寄存器上工作(至少,我是这样读答案的) 如果您在64位模式下编译,我简直不敢相信您不能使用POPassembly命令 我的主要问题是-如果您选择64位编译-这是否意味着您不能使用“常规”内联汇编指令?push和pop在64位模式下不能有32位操作

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

我问这个问题是因为我在读这个问题:

一个家伙无法编译内联汇编指令
POP
,因为他是在64位模式下编译的,而且
POP
只能在32位寄存器上工作(至少,我是这样读答案的)

如果您在64位模式下编译,我简直不敢相信您不能使用
POP
assembly命令


我的主要问题是-如果您选择64位编译-这是否意味着您不能使用“常规”内联汇编指令?
push
pop
在64位模式下不能有32位操作数,只能有16位或64位,这不是说
pop
只能在32位寄存器上工作。一般来说,许多代码在32位和64位模式下的工作原理相同,但一些很少使用的指令(十进制数学,与分段有关的指令)已从64位模式中完全删除。

最相关的优点是更通用的寄存器、更大的地址空间,保证SSE的存在。您可以在64位模式下使用
POP
汇编指令,但尤其是
POP ebp
不能在64位模式下编码。另一方面,
POP-rbp
(64位版本的ebp)应该可以正常工作。@JorgeNúñez谢谢,这更有意义!所以他打错了收银机@user997112是的,harold在他的回答中给出了一个更详细的原因,所以我们现在看到了不使用内联汇编的一个原因。它根本不便于携带。