2012-06-08 11 views
11

私は、NASM following this tutorial(セクション4)を使用して、より深遠なhello worldに取り組んでいます。このチュートリアルでは、基本的にコマンドライン入力の処理方法を教えています。pop NASMを使用した64ビットモードではサポートされていませんか?

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 

上記3つのポップ命令を参照error: instruction not supported in 64-bit modeと、コンパイル時にコード・エラーアウト:
これは、問題のコードの抜粋です。 Upon viewing the docsこのコードは32ビットシステムでのみ動作するようです。

64ビットpop命令はありますか?誰も私が見ることができるpopを使用して64ビットのチュートリアルを持っていますか?

+3

チュートリアルが32ビット用であることを理解していますか?私はあなたが64ビットマシンでもこのチュートリアルに従うことができるはずである 'elf'ではなく' elf32'に出力フォーマットを設定することによって32ビットコードを生成できると信じています。 –

+0

@Aedin - そのチュートリアルの後に32ビットモードを維持してください。 64ビット使用時にレジスタ名が異なるだけでなく、呼び出し規約も異なります。 'pop'を置き換えるだけではうまくいかないでしょう。 –

答えて

14

はい、64ビットpop命令は... POPです。 :-)ただし、(rbxのように)64ビットレジスタに対して使用する必要があります。

関連する問題