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ć?
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 ... –
@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. –