2012-01-08 129 views
2

私は現在Trisquelディストリビューション(私はUbuntuをフードの下で使用していると思われますか?)でアセンブリを学習しようとしています。何らかの理由で、私はアセンブリスニペットを作成して実行する最初のステップに固執しています。私はまさにここで何が起こっているかわからないんだけどbash、バイナリファイルを実行できません

> as myexit.s -o myexit.o && ld myexit.o -o myexit 
> ./myexit 
bash: ./myexit: cannot execute binary file 

.section data 

.section text 
.globl _start 
_start: 
movl $1, %eax # syscall for exiting a program 
movl $0, %ebx # status code to be returned 
int $0x80 

私は組み立て、実行可能ファイルを作成するためにそれをリンクし、実行可能ファイルを実行しよう

は、私のような何かを得ます。周りを検索した後、このエラーは通常、64ビットOSで実行可能な32ビットを実行しようとするとポップアップするか、あるいは逆の場合があります。ここで

fileunameコマンドの出力です:

$ file myexit 
myexit: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped 
$ uname -a 
Linux user 2.6.35-28-generiC#50trisquel2-Ubuntu SMP Tue May 3 00:54:52 UTC 2011 i686 GNU/Linux 

誰かが間違ってここに起こっている正確に何を理解して私を助けることはできますか?ありがとう。

+1

実行可能ビットは、右ですか? –

+0

@Uku:そうでなければ、通常は「許可が拒否されました」というエラーが表示されます – sasuke

+0

自分自身だと思っていますが、ただチェックしています。 –

答えて

4
.section text 

あなたは.textセクションにあるようにあなたのコードを必要とするときtextと呼ばれるセクションを作成すること、間違っています。それを置き換える:

.data 

.text 
.globl _start 
_start: 
    ... 
+0

うわー、ありがとう! 'data'を' .data'と 'text'で' .text'に置き換えると、コードは魅力的に機能しました。 – sasuke

関連する問題