Ich bin ziemlich neu in Linux (Ubuntu 10.04) und ein absoluter Neuling für Assembler. Ich habe einige Tutorials verfolgt und konnte nichts speziell für Linux finden. Also, meine Frage ist, was ist ein gutes Paket zum Kompilieren/Ausführen von Assembler und was sind die Befehlszeilenbefehle zum Kompilieren/Ausführen für dieses Paket?Kompilieren/Ausführen Assembler in Linux?
Antwort
Die GNU-Assembler (Gas) und NASM sind beide eine gute Wahl. Sie haben jedoch einige Unterschiede, die große ist die Reihenfolge, in der Sie Operationen und ihre Operanden setzen.
Gas verwendet AT & T Syntax:
mnemonic source, destination
nasm nutzt Intel-Stil:
mnemonic destination, source
Entweder man wird wahrscheinlich tun, was Sie brauchen.
dieses Tutorial ausprobieren: http://asm.sourceforge.net/intro/Assembly-Intro.html
Danke, dieses Tutorial ist großartig, da es Linux-spezifisch ist. Außerdem hatte das Tutorial sehr spezifische Anweisungen zum kompilieren und ausführen von Assembler progs in linux –
Gas hat ".intel_syntax" für eine Weile unterstützt - ich würde persönlich immer noch fasm, yasm oder nasm verwenden. – snemarch
Der Assembler (GNU) ist als (1)
Wenn Sie NASM verwenden, ist die Befehlszeile nur
nasm file.asm -o outfile
wo 'file.asm' ist die Assembly-Datei (Code) und 'outfile' ist die ausführbare Datei, die Sie wollen. Hier
einige weitere Informationen:
http://www.nasm.us/doc/nasmdoc2.html#section-2.1
Sie können mit dem folgenden Befehl NASM in Ubuntu installieren:
apt-get install nasm
Hier ist eine einfache Hallo Welt in Linux Montage Appetithäppchen :
http://web.archive.org/web/20120822144129/http://www.cin.ufpe.br/~if817/arquivos/asmtut/index.html
Ich hoffe, das ist, was Sie gefragt haben ...
Hallo Welt Beispiel ist ein defekter Link! –
http://www.tldp.org/HOWTO/Assembly-HOWTO/hello.html#AEN867 – imbellish
Der GNU-Assembler ist wahrscheinlich bereits auf Ihrem System installiert. Versuchen Sie man as
, um vollständige Nutzungsinformationen zu sehen. Sie können as
verwenden, um einzelne Dateien zu kompilieren und ld zu verknüpfen, wenn Sie wirklich, wirklich wollen.
Allerdings macht GCC ein großartiges Front-End. Es kann .s Dateien für Sie zusammenstellen. Zum Beispiel:
$ 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!
Der obige Code ist AMD64. Es wäre anders, wenn Sie noch auf einer 32-Bit-Maschine sind.
Sie können auch C/C++ Code direkt Montage kompilieren, wenn Sie neugierig sind, wie etwas funktioniert:
$ cat >hello.c <<EOF
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
EOF
$ gcc -S hello.c -o hello.s
Es ist auch FASM für 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
Es comiles mit
fasm hello.asm hello
wäre mein Vorschlag, das Buch Programmierung von Grund auf bekommen:
http://nongnu.askapache.com/pgubook/ProgrammingGroundUp-1-0-booksize.pdf
Das für das Einsteigen in Assembler ein sehr guter Ausgangspunkt ist Programmierung unter Linux und es erklärt eine Menge der Grundlagen, die Sie verstehen müssen, um zu beginnen.
3 Syntax (Nasm, Tasm, Gas) in 1 Assembler, Yasm.
- 1. Linux Assembler Fehler "unmögliche Einschränkung in 'asm'"
- 2. Gibt es Assembler REPL unter Linux?
- 3. Linux-Systemaufruf-Tabelle oder Cheetsheet in Assembler Sprache
- 4. Wie übergeben variable Adressen in Inline-GCC-Assembler (Linux)
- 5. Cygwin: Assembler Sprachentwicklung?
- 6. Subtraction in x86-Assembler
- 7. Microsoft Assembler zu GNU Assembler Umwandlung
- 8. Assembler Übungen
- 9. Fließkomma in Assembly Linux
- 10. Dynamische Labels in x86-Assembler
- 11. Drucken einer Nummer in Assembler?
- 12. Understaning Assembler-Code in windbg
- 13. SBIC-Anweisung in AVR Assembler
- 14. Wie funktionieren Prozeduraufrufe in Assembler?
- 15. Einbettung von Assembler in C++ akzeptabel?
- 16. iOS-Projekt möchte ich Assembler Assembler und Debugger
- 17. Verwendung von C definiert in ARM-Assembler
- 18. 6502 Assembler Zufallszahl Probleme
- 19. "Assembly" vs. "Assembler"
- 20. Assembler Speicheradresse Darstellung
- 21. Assembler-Sprachwerkzeuge und Referenzen
- 22. Assembler-Codierung Hilfe erforderlich
- 23. GNU Assembler comments
- 24. x86 inline assembler flag
- 25. SIC Assembler I/O
- 26. Drucken Fließkommazahl Assembler 8086
- 27. 64-Bit-Windows-Assembler
- 28. Einen Assembler erstellen
- 29. funktionale Assembler Sprache
- 30. x86 Assembler Speicheroperanden
Ich bin im selben Boot. Ich habe Asm unter Linux nie richtig verstanden, weil es keine echte Präsenz gibt. Vielleicht liegt es daran, dass Cracking bei Windows der letzte Schrei ist. –
Diese beantworten meine Frage nicht vollständig. Ich möchte immer noch wissen, welche Konsolenbefehle Sie verwenden würden, um Programme in NASM oder Gas zu kompilieren und auszuführen. –
Meine Vorliebe ist NASM. Ich gebe dir ein paar Informationen darüber, wie man es unter Ubuntu einrichten kann. – Justin