Компиляция / запуск ассемблера в Linux?



Я довольно новичок в Linux (Ubuntu 10.04) и полный новичок в ассемблере. Я следил за некоторыми учебниками, и я не мог найти ничего конкретного для Linux.
Итак, мой вопрос, Что такое хороший пакет для компиляции/запуска ассемблера и какие команды для компиляции/запуска этого пакета?

1468   7  

7 ответов:

ассемблер GNU (gas) и NASM являются хорошим выбором. Однако у них есть некоторые различия, большой из которых-порядок, в котором вы размещаете операции и их операнды.

газ использует синтаксис AT&T:

mnemonic    source, destination

nasm использует стиль intel:

mnemonic    destination, source

любой из них, вероятно, сделает то, что вам нужно.

попробуйте этот учебник:http://asm.sourceforge.net/intro/Assembly-Intro.html

ассемблер GNU, вероятно, уже установлен в вашей системе. Попробуй man as чтобы увидеть полную информацию об использовании. Вы можете использовать as для компиляции отдельных файлов и ЛД по ссылке, Если вы действительно, действительно хотите.

тем не менее, GCC делает отличный интерфейс. Он может собрать .s файлов для вас. Например:

$ cat >hello.s <<EOF
.data
.globl hello
hello:
.string "Hello, world!"

.text
.global main
main:
    pushq   %rbp
    movq    %rsp,       %rbp
    movq    $hello,     %rdi
    call    puts
    movq    ,         %rax
    leave
    ret
EOF
$ gcc hello.s -o hello
$ ./hello
Hello, world!

код выше AMD64. Это было бы по-другому, если вы все еще находитесь на 32-разрядной машине.

вы также можете скомпилировать код C/C++ непосредственно в сборку, если вам интересно, как что-то работает:

$ cat >hello.c <<EOF
#include <stdio.h>
int main(void) {
    printf("Hello, world!\n");
    return 0;
}
EOF
$ gcc -S hello.c -o hello.s

Если вы используете NASM, командная строка просто

nasm file.asm -o outfile

где файл'.asm '- это ваш файл сборки (код), а "outfile" - это исполняемый файл, который вы хотите.

вот еще немного информации:

http://www.nasm.us/doc/nasmdoc2.html#section-2.1

вы можете установить NASM в Ubuntu с помощью следующей команды:

apt-get install nasm

вот основной Привет Мир в сборке Linux, чтобы подогреть ваш аппетит:

http://web.archive.org/web/20120822144129/http://www.cin.ufpe.br/~if817/arquivos/asmtut/index.html

Я надеюсь, это то, что вы просили...

существует также FASM для Linux.

format ELF executable

segment readable executable

start:
mov eax, 4
mov ebx, 1
mov ecx, hello_msg
mov edx, hello_size
int 80h

mov eax, 1
mov ebx, 0
int 80h

segment readable writeable

hello_msg db "Hello World!",10,0
hello_size = $-hello_msg

это комилы с

fasm hello.asm hello

мое предложение было бы получить книгу программирования с нуля:

http://nongnu.askapache.com/pgubook/ProgrammingGroundUp-1-0-booksize.pdf

Это очень хорошая отправная точка для входа в ассемблерное программирование под linux, и она объясняет много основ, которые вам нужно понять, чтобы начать работу.

ассемблер (GNU) - это а(1)

3 синтаксиса (nasm, tasm, gas ) в 1 ассемблере, yasm.

http://www.tortall.net/projects/yasm/

Comments

    Ничего не найдено.