x86-64 Linuxアセンブラはありますか?

x86-64 Linuxアセンブラはありますか?

アセンブリ言語を学びたいのですが、インターネット検索は何の意味もありません。私はいくつかを手に入れましたが、それをExec format error理解wineするのに役立たないものを使用しました。それで、コマンドラインアセンブラが構造x86-64的に何をしているのか、そしてLinux用のhello worldの例を教えてくれる人がいるのだろうか。

ベストアンサー1

以下を含むさまざまなアセンブラを使用できます。

  • gas(GCCの一部binutilsでありサポートされています) - これはどこでも使用でき、AT&Tスタイルを使用します。
  • NASM(ディストリビューションでパッケージを見つけますnasm。) - これはIntelスタイルのニーモニックをサポートします。
  • ヤズムこれはNASM(パッケージの検索yasm)を書き直しました。
  • パシム、フラットアセンブラ。

これは「Hello world」ですgas

    .global _start

    .text
_start:
    mov     $1, %rax
    mov     $1, %rdi
    mov     $hello, %rsi
    mov     $13, %rdx
    syscall

    mov     $60, %rax
    xor     %rdi, %rdi
    syscall

hello:
    .ascii  "Hello, world\n"

に保存hello.Sしてbuild itを使用してくださいgcc -c hello.S && ld -o hello hello.o

NASMに対応する内容は次のとおりです。

    section .text
    global  _start

_start:
    mov     rax, 1
    mov     rdi, 1
    mov     rsi, hello
    mov     rdx, len
    syscall

    mov     rax, 60
    xor     rdi, rdi
    syscall

    hello   db "Hello, world",0x0A
    len     equ $ - hello

別の名前で保存しhello.asmてを使用してビルドしますnasm -felf64 hello.asm && ld -o hello hello.o

おすすめ記事