質問

いサンプル組み立てているファイルかコンパイルnasm:

nasm -f elf syscall.asm 

であることを特徴と の使用.o ファイルです。ようにしているリンクでld:

ld -o syscall syscall.o

Ldのコマンドは失敗し、以下のエラー:

ld: i386 architecture of input file `syscall.o' is incompatible with i386:x86-64 output

しかし、い場合、その

ld -o syscall syscall.o -melf_i386

のコマンドが成功しを取得します の使用を許可 実行形式にまとめたものです。

コーヒーに飽きたら寿司にとnasmないオブジェクトを生成するコードx86-64形式に加えた"ビット64"ディレクティブの先頭にの使用.asmファイルです。

そのように組み立ての使用.asmとnasmた以下のようなエラー:

error: elf output format does not support 64-bit code

そうな不思議ながって"ファイルを/usr/bin/nasm"自分の端末で受けとる:

/usr/bin/nasm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

私の64ビットFedora Core11の最新バージョンのnasm設置され、私のCPUは、Intel Core2Duo E7200.

[編集]

私の質問は、以下のようになります。nasm放出されやすいオブジェクトファイル互換i386:x86-64.

役に立ちましたか?

解決

使ってみ elf64 としての出力形式です。

例実行します:

$ cat elf64.asm
section .text
        jmp [rax]
$ nasm -f elf64 elf64.asm
$ objdump -Sr elf64.o

elf64.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <.text>:
   0:   ff 20                   jmpq   *(%rax)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top