Assembly 在使用NASM的64位模式下不支持pop指令?

Assembly 在使用NASM的64位模式下不支持pop指令?,assembly,x86-64,nasm,32bit-64bit,Assembly,X86 64,Nasm,32bit 64bit,我正在使用NASM开发一个更深入的hello world(第4节)。本教程主要教您如何处理命令行输入。 这是有问题的代码片段: section .text global _start _start: pop ebx ; arg count pop ebx ; arg[0] the program name pop ebx ; arg[1-n] the remainder of the

我正在使用NASM开发一个更深入的hello world(第4节)。本教程主要教您如何处理命令行输入。
这是有问题的代码片段:

section .text
        global _start

_start:
        pop     ebx     ; arg count
        pop     ebx     ; arg[0] the program name
        pop     ebx     ; arg[1-n] the remainder of the args
                        ; must each be indiviually popped
代码在编译过程中出错,错误:64位模式下不支持指令参见上述3条pop指令。这段代码似乎只适用于32位系统


是否有64位
pop
指令?有没有人有我可以看的使用
pop
的64位教程?

是的,64位
pop
指令是。。。流行音乐:-)不过,您需要对64位寄存器使用它(如
rbx
)。

基本上,您可以通过将eax替换为rax将其转换为64位(所有其他寄存器也是如此)

您知道本教程是针对32位的吗?我相信您可以通过将输出格式设置为
elf32
而不是
elf
来生成32位代码,这应该允许您在64位机器上也遵循本教程…@Aedin-是的,如果遵循该教程,您应该保持32位模式。使用64位时,不仅寄存器名不同,调用约定也不同。仅仅替换
pop
是不可能的。当我替换为
pop.
时,出现以下错误:“error:parser:instruction expected”我正在使用
nasm-f elf64 myfile。asm
myfile包括以下行:
pop。eax@hasany删除“.”,因为它会导致语法错误。它应该是“POP EAX”,当我只是大写时,也会出现同样的错误。@hasany在该指令之前,您可能有语法错误。或者您可能缺少所需的汇编程序指令。我建议您在这个站点上打开自己的问题,并包含导致错误所需的最低源代码。