2010-11-19 25 views
1

JWasmコンパイラを使用して、Linuxで次のアセンブラコードを実行しようとしています。しかし、すべてのコマンドについては、コマンドは見つかりませんでした。どうして?そして、 ";"で始まる行にエラーを返します。それは一種のコメント行ですか?この行を削除することはできますか?ありがとう。アセンブラコードがLinuxで動作しない

;--- "hello world" for 64-bit Linux, using SYSCALL. 
;--- assemble: JWasm -elf64 -Fo=Lin64_1.o Lin64_1.asm 
;--- link:  gcc Lin64_1.o -o Lin64_1 


stdout equ 1 
SYS_WRITE equ 1 
SYS_EXIT equ 60 

.data 

string db 10,"Hello, world!",10 

.code 

_start: 
mov edx, sizeof string 
mov rsi, offset string 
mov edi, stdout 
mov eax, SYS_WRITE 
syscall 
mov eax, SYS_EXIT 
syscall 

end _start 
+0

OPのような音が、ソースファイルをシェルスクリプトとして実行しようとしていますか? –

+0

どうすればいいですか?どうも。ファイル内の – rogcg

答えて

0

私はJWasmには慣れていませんが、一般にインデントされていないエントリはアセンブラディレクティブであり、命令ではありません。

あなたが任意の実際のアセンブラ命令(CPUが実行しますもの)ではなく、アセンブラディレクティブのために(スペース/タブ)を配置する(アセンブラはあなたを助けるために使用するもの)

+0

はインデントされていますが、ここではそうではありません。どのアセンブラコンパイラをLinuxに使用しますか? GCCはそれをコンパイルする? – rogcg

+0

@psyhclo:私はLinux上で 'gas'(GNUアセンブラ)を使うだけです。 –

+0

私はそれをインストールしましたが、どのように起動するのですか? ./configure、makeとタイプしました。そして、それはたくさんのものをインストールしましたが、ファイルをコンパイルする方法は? – rogcg

0

をしたいです。ほとんどの種類のアセンブリでは、通常、JWasmがその行をそのように認識しないという奇妙な点があります。削除してください。

+0

私は ';'を削除しました。しかし、それはコマンドを認識しません。プログラムのどのコマンドでも、JWasmはコマンドが見つかりませんと言います。 LinuxアセンブリコードがWindowsアセンブリコードと異なるため、アセンブラのモデルであるかどうかわかりません。しかし、私はLinux用のアセンブリコードを試したことがあります.JWasmは認識しません。 すでにJWasmを使用しましたか? – rogcg

+0

私はJWasmをダウンロードしました。 ** Lin64_1.asm:24行、2回のパス、0ミリ秒、0の警告、0のエラー** –

+0

どのように設定しましたか?私は、ホームフォルダ内のフォルダjwasmを貼り付けて、私はターミナルでこれを行うことによってそれにアクセス: CDのjwasm ./jwasm CDのサンプル ./Lin64_1.asm をし、それがこの ./Lin64_1を返します。 asm:行1: 'トークン 'の近くにシンティックエラーが発生しました';' '/Lin64_1.asm:行1: '; --- SYSCALLを使用して、64ビットLinuxの場合は" hello world "。 なぜそれが起こっているのかも知りませんか?ありがとう。 – rogcg

関連する問題