Assembler Programmierung

Dieses Thema im Forum "Programmieren allgemein" wurde erstellt von Silvos, 15.12.2007.

  1. Silvos

    Silvos Eroberer

    Dabei seit:
    24.05.2007
    Beiträge:
    64
    Zustimmungen:
    0
    Hallo, ich würde gerne Assembler lernen.
    Welche Programme brauche ich dazu?
    Kennt ihr gute Tutorial?
    Was würdet ihr mir sonst noch raten?
    Ich habe Slackware Linux.

    Danke.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. P17

    P17 Schandensbegrenzer

    Dabei seit:
    06.12.2007
    Beiträge:
    196
    Zustimmungen:
    0
    Ort:
    Germany
  4. #3 bytepool, 15.12.2007
    Zuletzt bearbeitet: 15.12.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    hi,

    The art of assembly:
    http://webster.cs.ucr.edu/

    The art of assembly ist ein ziemlich bekanntes Buch zum Thema, frei verfuegbar, und _sehr_ umfangreich ;)
    Solltest du das jemals durch haben, brauchst du wahrscheinlich kein 2tes Buch zum Thema mehr ;)
    Und vor allem gibt es auf der Webseite auch einiges zum Thema assembly unter Linux.

    Aber kannst du schon C? Weil imho ist es leichter erst C zu lernen, und dann assembly, aber das ist natuerlich Geschmacksache, wahrscheinlich wird es auch Leute geben die das Gegenteil behaupten.

    Unter Linux wird meistens gas (GNU Assembler) benutzt, der im uebrigen Teil der gcc suite ist. Es gibt aber noch wesentlich mehr (z.B. nasm), das haengt vor allem auch davon ab, welchen Stil du programmieren moechtest, gas benutzt naemlich eine andere Syntax als die meisten anderen Assembler.
    Einfach mal in das Thema einlesen...

    edit:
    Ahja, mir war der Name der gas Syntax entfallen. Der gas benutzt die AT&T Syntax, wohingegen die meisten anderen Assembler die Intel Syntax benutzen.
    Die inline assembly Stellen im Linux Kernel werden aber z.B. mit dem gas geschrieben, und sind deswegen in der AT&T Syntax. Welche du davon erstmal lernen willst ist also auch von der Platform abhaengig auf der du schreiben willst, und wofuer du es spaeter benutzen willst.

    edit2:
    Ich bin mir grad nicht mehr sicher ob fuer den Linux Kernel tatsaechlich gas zum Uebersetzen benutzt wird, es kann sein dass das immer noch as86 ist, aber das weiss ich nicht, und ist auch nur ein Detail am Rande. Es ist jedenfalls AT&T Syntax ;)

    Viel Spass damit,
    bytepool
     
  5. #4 kotzkroete, 15.12.2007
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    Also ich finde das Buch pcasm ganz gut.
    Ausserdem moechte ich noch inzufuegen, dass auch der GNU as Intel Syntax kann. Weiss aber nicht mehr genau wie.
     
  6. #5 bytepool, 15.12.2007
    Zuletzt bearbeitet: 15.12.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Ja, das ist richtig, da gibt es irgendwie einen switch fuer, muesste ich auch erst nachgucken wie der nochmal hiess, aber dann kann man auch gleich nasm nehmen, oder? ;)

    edit:
    Achne, scheinbar doch nicht einfach nur ein switch:
    Quelle: http://www.tldp.org/HOWTO/Assembly-HOWTO/gas.html

    mfg,
    bytepool
     
  7. #6 supersucker, 15.12.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    @bytepool

    Danke für den Link, das Seitendesign ist zwar wirklich grauenhaft, aber das Buch sieht sehr gut aus....
     
  8. #7 kotzkroete, 15.12.2007
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    Ich habe es zwar nicht gelesen, aber den HLA, den dieses Buch verwendet, wuerde ich nicht nehmen.
    SO sieht kein Assemblercode aus.
     
  9. #8 bytepool, 15.12.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hehe, ja, das ist nicht ganz falsch, die neuere Variante behandelt halt High Level Assembly, ein Versuch Assembler Portabel zu machen.
    Ich habe hier noch eine alte Fassung des Buchs als pdf auf der Platte, in der noch "normales" assembly behandelt wird.
    Das hier sollte noch eine alte Fassung des Buches sein:

    http://maven.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html
    http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/toc.html

    mfg,
    bytepool
     
  10. Silvos

    Silvos Eroberer

    Dabei seit:
    24.05.2007
    Beiträge:
    64
    Zustimmungen:
    0
    Ja, ich kann schon c bzw. c++.

    Ich habe noch eine Frage:
    Ich habe eine Hello World in assembler, mit nasm übersetzt und jetzt habe ich eine Binärdatei.
    Wie führe ich diese aus?
    Kann man dowas überhaupt wie ein normales Programm ausführen?
     
  11. #10 kotzkroete, 16.12.2007
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    Also man uebersetzt normalerweise mit:
    nasm -f elf input.s -o output.o
    ld output.o -o output oder gcc output.o -o output
    Ausfuehren mit ./output, wie gewohnt.
     
  12. Silvos

    Silvos Eroberer

    Dabei seit:
    24.05.2007
    Beiträge:
    64
    Zustimmungen:
    0
    Bei mir, unter Slackware Linux, gibt es kein ld und gcc gibt die Meldung
    .
    Gibt es ein anderes Programm wie ld welches bei Slackware standartmäßig dabei ist?
     
  13. #12 kotzkroete, 16.12.2007
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    ld MUSS dabei sein. Das gehoert zu den binutils.
     
  14. #13 Silvos, 16.12.2007
    Zuletzt bearbeitet: 16.12.2007
    Silvos

    Silvos Eroberer

    Dabei seit:
    24.05.2007
    Beiträge:
    64
    Zustimmungen:
    0
    Kann es sein, dass es bei mir ldd heißt?

    Da kommt bei mir allerdings:
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. Gast1

    Gast1 Guest

    ld != ldd

    Und wie weiter oben schon geschrieben, ld muss eigentlich vorhanden sein, auch bei SuSE ist es übrigens im Paket binutils enthalten.

    Also unbedingt ld über Deinen Paketmanager nachinstallieren, wahrscheinlich heisst das Paket auch unter Slack "binutils".

    Code:
    which ld
    könnte ausserdem weiterhelfen.
     
  17. Silvos

    Silvos Eroberer

    Dabei seit:
    24.05.2007
    Beiträge:
    64
    Zustimmungen:
    0
    Ich habe mir binutils runtergeladen, installiert und es geht.

    Danke an alle.
     
Thema:

Assembler Programmierung

Die Seite wird geladen...

Assembler Programmierung - Ähnliche Themen

  1. Übersicht über Assemblercode in freier Software

    Übersicht über Assemblercode in freier Software: Steve McIntyre hat für Linaro die Verwendung von Assemblercode in freier Software untersucht. Die Studie diente dazu, die Portierbarkeit auf die...
  2. Assembler, Linux und Keyboard HIT-Abfangen

    Assembler, Linux und Keyboard HIT-Abfangen: Hallo allerseits. Ich mach das Buch Art Of Assembly durch, seit 2 Jahren mach ich endlich wieder weiter damit, schei.... Pause, aber musste...
  3. objdump als disassembler

    objdump als disassembler: hallo, ich möchte eine (ELF-)ausführbare datei mit objdump disassemblieren (at&t syntax). wenn ich das mit objdump -d mache, bekomme ich zwar...
  4. assembler->os

    assembler->os: hallo leute, kann mir jemand ein buch/onlinetutorial empfehlen in dem man assembler auf os basis programmieren kann. also ich würde gern ein os...
  5. Wie Programmstart-Argumente in Assembler auslesen?

    Wie Programmstart-Argumente in Assembler auslesen?: hi, ich bin grade dabei Asembler zu lernen, und hätte da mal eine Frage. Wie kann ich die Argumente, welche beim Programmstart unter Linux...