Je suis assez nouveau pour Linux (Ubuntu 10.04) et un novice à l'assembleur. Je suivais quelques tutoriels et je ne pouvais pas trouver quelque chose de spécifique à Linux. Donc, ma question est, quel est un bon paquet pour compiler/exécuter l'assembleur et quelles sont les commandes de ligne de commande à compiler/exécuter pour ce paquet?Compiler/exécuter l'assembleur sous Linux?
Répondre
L'assembleur GNU (gaz) et MSNA sont deux bons choix. Cependant, ils ont quelques différences, la grande étant l'ordre dans lequel vous mettez les opérations et leurs opérandes.
gazutilise AT & T Syntaxe:
mnemonic source, destination
nasm utilise le style intel:
mnemonic destination, source
Soit on probablement faire ce que vous avez besoin.
Essayez ce tutoriel: http://asm.sourceforge.net/intro/Assembly-Intro.html
Merci, ce tutoriel est génial car il est spécifique à Linux. En outre, le tutoriel avait des instructions très spécifiques sur la façon de compiler et d'exécuter des progs assembleur dans linux –
gaz a pris en charge ".intel_syntax" pour un moment - je serais personnellement toujours utiliser fasm, yasm ou nasm si. – snemarch
L'assembleur (GNU) est comme (1)
Si vous utilisez MSNA, la ligne de commande est juste
nasm file.asm -o outfile
où 'file.asm' est votre fichier d'assemblage (code) et 'outfile' est l'exécutable que vous voulez.
Voici quelques informations supplémentaires:
http://www.nasm.us/doc/nasmdoc2.html#section-2.1
Vous pouvez installer MSNA dans Ubuntu avec la commande suivante:
apt-get install nasm
est ici un Bonjour tout le monde de base dans l'assemblage Linux pour aiguiser votre appétit :
http://web.archive.org/web/20120822144129/http://www.cin.ufpe.br/~if817/arquivos/asmtut/index.html
J'espère que c'est ce que vous demandiez ...
Exemple Hello World est un lien brisé! –
http://www.tldp.org/HOWTO/Assembly-HOWTO/hello.html#AEN867 – imbellish
L'assembleur GNU est probablement déjà installé sur votre système. Essayez man as
pour voir toutes les informations d'utilisation. Vous pouvez utiliser as
pour compiler des fichiers individuels et ld pour lier si vous voulez vraiment, vraiment.
Cependant, GCC fait un excellent frontal. Il peut assembler des fichiers .s pour vous. Par exemple:
$ 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 $0, %rax
leave
ret
EOF
$ gcc hello.s -o hello
$ ./hello
Hello, world!
Le code ci-dessus est AMD64. Ce serait différent si vous êtes toujours sur une machine 32 bits.
Vous pouvez également compiler le code C/C++ directement à l'assemblage si vous êtes curieux de voir comment quelque chose fonctionne:
$ cat >hello.c <<EOF
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
EOF
$ gcc -S hello.c -o hello.s
Il y a aussi FASM pour 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
Il comiles avec
fasm hello.asm hello
Ma suggestion serait d'obtenir le livre Programmation à partir du sol:
http://nongnu.askapache.com/pgubook/ProgrammingGroundUp-1-0-booksize.pdf
C'est un très bon point de départ pour obtenir en assembleur Programmation sous Linux et il explique beaucoup de bases que vous devez comprendre pour commencer.
3 syntaxe (nasm, tasm, gaz) dans 1 assembleur, yasm.
Je suis dans le même bateau. Je n'ai jamais vraiment vu d'asm sur Linux parce qu'il n'y a pas de présence réelle. C'est peut-être parce que sur Windows, le cracking fait fureur. –
Ceux-ci ne répondent pas complètement à ma question. Je veux toujours savoir quelles commandes de la console vous utiliseriez pour compiler et exécuter des programmes en MSNA ou gaz –
Ma préférence est NASM. Je vous donne quelques informations sur la façon de le faire fonctionner sur Ubuntu ci-dessous. – Justin