2012-06-08 14 views
11

Estoy trabajando en un mundo hola más profundo usando NASM following this tutorial (sección 4). Este tutorial esencialmente le enseña cómo manejar la entrada de línea de comando.
Este es el fragmento de código en cuestión:pop Instrucciones no admitidas en el modo de 64 bits con NASM?

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 

Los errores de código durante la compilación con error: instruction not supported in 64-bit mode en referencia a las instrucciones de pop 3 anteriores. Upon viewing the docs parece que este código solo funciona para sistemas de 32 bits.

¿Hay instrucciones de 64-bit pop? ¿Alguien tiene un tutorial de 64 bits usando pop que puedo ver?

+3

¿Te das cuenta de que el tutorial es para 32 bits? Creo que puede generar código de 32 bits configurando el formato de salida en 'elf32' en lugar de' elf', que debería permitirle seguir este tutorial incluso en una máquina de 64 bits ... –

+0

@Aedin - Sí, debería permanezca en modo de 32 bits si sigue ese tutorial. Los nombres de registro no solo son diferentes cuando se usan 64 bits, por lo que también son las convenciones de llamada. Simplemente reemplazar el 'pop' es poco probable que funcione. –

Respuesta

14

Sí, la instrucción pop de 64 bits es ... POP. :-) Debes usarlo contra registros de 64 bits (como rbx).

Cuestiones relacionadas