好的,我得到这个编译错误:
Error: suffix or operands invalid for `push'
当我使用这条线时:
pushw %es;
我知道它是 %es 或 w,因为我已经成功地为 64 位汇编器移植了其他推送、弹出命令。
%es
是根据我发现的一些文档的现有寄存器,我认为没有不同的引用。
那么我的问题可能是什么?我对我的 asm 非常生疏,我认为它可能是 w。
感谢您的帮助。
最佳答案
作为 Zimbaboa 已经 explained , 64位模式下没有分段。
此外,如果您查看英特尔的手册,Instruction Set Reference, M-Z ,您将看到 push ES
在 64 位模式下完全是无效指令(第 423 页):
Opcode Instruction Op/ 64-Bit Compat/ Description En Mode Leg Mode ... 0E PUSH CS NP Invalid Valid Push CS. 16 PUSH SS NP Invalid Valid Push SS. 1E PUSH DS NP Invalid Valid Push DS. 06 PUSH ES NP Invalid Valid Push ES. 0F A0 PUSH FS NP Valid Valid Push FS. 0F A8 PUSH GS NP Valid Valid Push GS.
关于linux - 帮助 %es 注册 x86 到 x86_64 汇编代码端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5289316/