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.

답변2

NASM은 Linux/Unix용 훌륭한 어셈블러입니다. Google에서 NASM 64비트 코드의 수많은 예를 찾을 수 있습니다.

Centos의 경우 다음 명령을 사용하여 NASM을 설치할 수 있습니다.

yum install nasm -y

데비안/우분투의 경우 다음과 같을 수 있습니다:

apt-get install nasm

답변3

SASM

파일을 편집합니다.

$ apt-get install sasm

NASM

파일을 컴파일합니다.

$ apt-get install nasm

관련 정보