2012-06-08 9 views
11

Sto lavorando a un mondo più approfondito utilizzando il NASM following this tutorial (sezione 4). Questo tutorial ti insegna essenzialmente come gestire l'input da riga di comando.
Questo è il frammento di codice in questione:pop Istruzioni non supportate in modalità a 64 bit utilizzando 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 

Gli errori di codice durante la compilazione con error: instruction not supported in 64-bit mode facendo riferimento alle istruzioni 3 pop di cui sopra. Upon viewing the docs sembra che questo codice funzioni solo per sistemi a 32 bit.

Esiste un'istruzione pop a 64 bit? Qualcuno ha un tutorial a 64 bit usando pop che posso guardare?

+3

Ti rendi conto che il tutorial è per 32 bit? Credo che sia possibile generare codice a 32 bit impostando il formato di output su 'elf32' piuttosto che su' elf', che dovrebbe consentire di seguire questo tutorial anche su una macchina a 64 bit ... –

+0

@Aedin - Sì, dovresti rimanere in modalità a 32 bit se si segue quel tutorial. Non solo i nomi dei registri sono diversi quando si usano 64 bit, quindi sono anche le convenzioni di chiamata. Sostituire semplicemente il 'pop' è improbabile che funzioni. –

risposta

14

Sì, l'istruzione a 64 bit pop è ... POP. :-) È necessario usarlo contro i registri a 64 bit (come rbx).