2012-06-08 7 views
11

Pracuję nad bardziej niezależnym światem przy użyciu NASM following this tutorial (sekcja 4). Ten samouczek w zasadzie uczy, jak obsługiwać wejście linii poleceń.
Jest to fragment kodu w pytaniu:pop Instrukcja nie jest obsługiwana w trybie 64-bitowym przy użyciu 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 

Błędy podczas kompilacji kodu z error: instruction not supported in 64-bit mode odnosząc się do instrukcji pop 3 powyżej. Upon viewing the docs wydaje się, że ten kod działa tylko w systemach 32-bitowych.

Czy istnieje instrukcja 64-bitowa pop? Czy ktoś ma 64-bitowy samouczek używający pop, który mogę obejrzeć?

+3

Zdajesz sobie sprawę, że samouczek jest dla wersji 32-bitowych? Wierzę, że można wygenerować kod 32-bitowy, ustawiając format wyjściowy na "elf32", a nie "elf", co powinno umożliwić wykonanie tego samouczka nawet na 64-bitowym komputerze ... –

+0

@Aedin - Tak, powinieneś pozostań w trybie 32-bitowym, jeśli postępujesz zgodnie z tym samouczkiem. Nie tylko nazwy rejestrów różnią się w przypadku użycia 64 bitów, więc są to także konwencje wywoływania. Zastąpienie 'pop'ów raczej nie zadziała. –

Odpowiedz

14

Tak, instrukcja 64-bitowa pop to ... POP. :-) Musisz jednak użyć tego przeciwko 64-bitowym rejestrom (np. rbx).

Powiązane problemy