assembler

Tutorials.at
Verfügbare Informationen zu "assembler"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Moritz - detewe89 - wirthi - DrPhil_Guth - Xin - Dirty Oerty
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: Sonstige Programmiersprachen
  • Antworten: 25
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: assembler
  • Letzte Antwort: vor 15 Jahren, 3 Monaten, 12 Tagen, 10 Stunden, 34 Minuten
  • Alle Beiträge und Antworten zu "assembler"

    Re: assembler

    Moritz - 05.12.2007, 13:29

    assembler
    auch, wenn das jetzt nicht ganz hierhin gehört :
    kennt jemand einen guten freeware assembler??



    Re: assembler

    detewe89 - 05.12.2007, 17:51


    Naja, Deine Frage passt doch ganz gut in "Sonstige Programmiersprachen"... :-)

    Ein guter Freeware-Assembler ist meiner Meinung nach der GNU-Assembler GAS.

    ---------------

    Und hier würde ich auch mal ganz gerne eine Frage stellen, die mich schon lange interessiert: Wovon hängt es nun letztendlich ab, in welcher Assemblersprache ich programmiere: Von der Maschine oder vom installierten Assembler???

    Und wie finde ich raus, welcher "Dialekt" für mein System die geeignete ist?
    (Ich hab AMD Athlon 64, Ubuntu-Linux).


    Gruß,
    Daniel



    Re: assembler

    wirthi - 05.12.2007, 17:56


    Theoretisch von beidem. Ein Assembler ist ja letztlich auch nicht (echter) Maschinencode, sondern eine Abstraktion davon. Eine ziemlich hardwarenahe, aber es ist keine 1:1 Zuordnung.

    Du musst natürlich den exakten Dialekt des von dir installierten Assemblers benutzen. Dieser Assembler wiederum muss Maschinencode ausgeben können, der für die Zielmaschine (auf der der Programmcode ausgeführt werden soll) passt.



    Re: assembler

    DrPhil_Guth - 05.12.2007, 17:57


    Ja, den Netwide- Assembler.
    Ziemlich gut wie ich finde, downloadbar hier:

    http://nasm.sourceforge.net/

    Sei dir allerdings bewusst, dass es sich hier um einen Kommandozeilenassembler haltet, und nicht um eine IDE. Aber naja, Ich weiß nicht ob es überhaupt IDE's für assembler gibt...

    Ach ja:

    Bitte benutze nicht mehr diese Smileytext funktion. Die nervt echt tierisch.



    Re: assembler

    DrPhil_Guth - 05.12.2007, 18:18


    @ detewe:

    In welcher AssemblerSPRACHE du Programmierst hängt nur von deiner CPU ab. Das üblichste wäre Intel x86, wo aber auch die meisten AMD Prozessoren dazugehören, weil sie demn gleichen befehlssatz haben.

    Was allerdings verschieden sein kann ist die Syntax, also das wie du die anweisungen notierst.
    Ein kleines Beispel:

    Intel Syntax hat folgendes geschrieben: push ebp
    mov ebp, esp
    mov eax, [ebp+8]
    add eax, [ebp+12]
    pop ebp
    ret

    AT&T Syntax hat folgendes geschrieben: push %ebp
    movl %esp, %ebp
    movl %0x8(ebp), %eax
    addl %0xc(ebp), %eax
    pop %ebp
    ret

    Du siehst vielleicht es gibt Unterschiede, aber der inhalt ist gleich.



    Re: assembler

    detewe89 - 05.12.2007, 20:32


    Das heißt also, dass die Sprache von der CPU abhängt, und die Syntax vom Assembler??? Welche Syntax verwende ich konkret wann? Oder gehen immer beide?

    Daniel



    Re: assembler

    DrPhil_Guth - 05.12.2007, 20:57


    Ganz genau.
    Welche Syntax du verwendest hängt nur davon ab, welchen Assembler du verwendest. Die Syntax der meisten Assembler ähnelt allerdings der von Intel (z.B. NASM)
    Ich kenne nur den GAS, der die AT&T Syntax verwendet.



    Re: assembler

    Moritz - 05.12.2007, 21:01


    bei nasm hatte ich schon gekuckt, aber ich wusste nicht, welche Dateien ich jetzt downloaden soll bzw. es hat nicht funktioniert!!



    Re: assembler

    detewe89 - 06.12.2007, 18:28


    Kennt jemand eine gute Seite, um Assembler zu lernen?



    Re: assembler

    Moritz - 06.12.2007, 20:18


    http://de.wikibooks.org/wiki/Assembler_%2880x86_Prozessor%29-Programmierung


    http://ivs.cs.uni-magdeburg.de/bs/lehre/sose99/bs1/seminare/assembler.shtml


    die obere ist aber der Hammer...über 50 Seiten. Habe mir das mal ausgedruckt. (Aber nicht mit meinem Drucker :wink: );



    Re: assembler

    Xin - 07.12.2007, 00:23


    detewe89 hat folgendes geschrieben: Kennt jemand eine gute Seite, um Assembler zu lernen?
    Wenn's auch mehrere Seiten sein dürfen: Terrashop hat häufig Assemblerbücher sehr preisgünstig.
    Die Bücher von Addision Wesley eignen sich gut als Referenz. Das Assembler 'gepackt' soll als Referenz ebenfalls gut sein, ich habe es allerdings (noch) nicht.



    Re: assembler

    Dirty Oerty - 07.12.2007, 20:43


    Zusätzlich gibt's noch Google :D



    Re: assembler

    DrPhil_Guth - 07.12.2007, 21:16


    Also ich habs hier gelernt:

    http://drpaulcarter.com/pcasm/

    Ist natürlich nicht so ausführlich wie ein richtiges Buch, aber es enthält immerhin die Grundlagen.

    Wie auch immer, ich würde dir empfehlen zuerst eine andere Sprache, am besten C zu lernen und vollständig zu beherrschen. Es gibt nämlich einige Dinge die man ohne die richtige Grundlage nur sehr sehr sehr schwer verstehen kann.



    Re: assembler

    Moritz - 07.12.2007, 22:28


    Jaaaa
    englische Seiten erleichtern das Verständnis enorm :?



    Re: assembler

    Xin - 08.12.2007, 01:22


    DrPhil_Guth hat folgendes geschrieben: empfehlen zuerst eine andere Sprache, am besten C zu lernen und vollständig zu beherrschen. Es gibt nämlich einige Dinge die man ohne die richtige Grundlage nur sehr sehr sehr schwer verstehen kann.
    Ich stimme der Empfehlung zu, obwohl ich sagen muss, dass C (und vieles andere) sehr einfach zu verstehen ist, wenn man Assembler vorher lernt.

    Ob Assembler schwerer oder einfacher als C ist, halte ich für eine Frage der Perspektive. Da Assembler nur aus sehr rudimentären Befehlen besteht, ist es - meiner Meinung nach - sehr leicht zu lernen. Allerdings muss man selbst einfache Aufgaben sehr umständlich lösen, weshalb man extrem leicht Fehler einbaut. Dafür lernt man wiederum Fehler zu finden und zu vermeiden - und eben Algorithmen wirklich grundlegend aufzubauen.

    Allerdings muss man für Asm _wirklich_ programmieren lernen wollen, denn ein Hello World bedeutet Aufwand. Selbst die Ausgabe eines Integers bedeutet in Assembler erstmal von Hand die Zahl in einen Text zu konvertieren. Man muss heutzutage nicht mehr das letzte aus einem Taktzyklus rausholen, die coolen Effekte laufen eh über OpenGL oder DirectX auf der Grafikkarte ab.
    Als Assembler-Guru bringt man also nichtmals mehr die Pixel hübscher zum Tanzen.

    Damit stellt sich heute die Frage, ob der große Mehraufwand Asm zu lernen noch einen angemessenen Nutzen hat. Wenn man das erkannt hat, wird es vermutlich bei einem wenig produktiven Hobby bleiben.



    Re: assembler

    wirthi - 08.12.2007, 13:17


    Assembler zu lernen hat den Vorteil, dass man erst dann wirklich versteht, was der Computer eigentlich macht. Ansonsten: stimmt, sinnlos.



    Re: assembler

    DrPhil_Guth - 08.12.2007, 13:32


    Dieser Vorteil den du ansprichst ist so gewaltig, dass es sich auszahlen würde Assembler zu lernen. Das ist so wie wenn man sagen würde: "Och, eine Waffe kann zwar schießen, ansonsten ist sie vollkommen sinnlos". Für manche menschen ist das nützlich genug.

    Und genauso ist es mit assembler. Du kannst zwar nicht "richtig" damit Programmieren, allerdings kannst du mit dem Wissen so einige coole dinge machen, wie zum Beispiel Sicherheitslücken finden und dir überlegen wie man diese ausnützen könnte, ungewünschten code aus Bereits fertigen Programmen entfernen und noch viele andere lustige Sachen.

    Aber ich sag dir eins, damit dir Assembler was nützt musst du wirklich viel Gehrinschmalz einsetzen, und selbst wenn du es kannst wirst du damit viel Aufwand (Tipparbeit und noch mehr Denkarbeit) haben.

    Wie auch immer, ich bin der Meinung es lohnt sich.



    Re: assembler

    Xin - 08.12.2007, 13:55


    DrPhil_Guth hat folgendes geschrieben: Wie auch immer, ich bin der Meinung es lohnt sich.

    Lohnen tut es sich auf jeden Fall.
    Allerdings kostet diese Erfahrung 1-2 Jahre Zeit und bringt finanziell gesehen nichts ein. Als Informatiker wirst Du gut bezahlt, wenn Du Java-Funktionen aufrufen kannst und einen Algorithmus 'irgendwie' umsetzen kannst. Es muss auch nicht alles verstanden werden, was man programmiert, wenn man damit Geld verdienen möchte.

    Optimierungen werden nur noch selten vorgenommen, selbst Embedded Systems sind inzwischen Großcomputer bezogen auf das, was sie mal waren.

    Assembler lohnt sich nur dann, wenn man wirklich verstehen will, was man tut und es nicht darum geht, Leute mit tollen Effekten zu beeindrucken oder schnell das Geld zu verdienen.
    Nur, wenn man es wirklich wissen will, hat man auch die Motivation 1-2 Jahre sich weiterzubilden und auf Anerkennung und Geld zu verzichten, die man in der Zeit auch haben könnte.



    Re: assembler

    Moritz - 09.12.2007, 20:54


    aber wenn man kritische teile in asm übersetzt, verschnellert dass die Ausführung total!!



    Re: assembler

    Xin - 09.12.2007, 21:32


    Moritz hat folgendes geschrieben: aber wenn man kritische teile in asm übersetzt, verschnellert dass die Ausführung total!!

    Okay... schauen wir uns die Situation an.
    Aus meiner Zitatedatenbank werfe ich erstmal folgendes zum Thema Qualität von Compilern in die Runde:
    Zitat: The Greenhills compiler may have optimized this benchmark to nothing.
    Während du also versuchst etwas zu verbessern, werfen moderne Compiler inzwischen ganze Teiles Deines Codes weg, weil er überflüssig ist. Je erfahrener ein Programmierer ist, desto weniger programmiert er.

    Der nächste Punkt ist, dass man erstmal kritische Teile erkennen muss. Hier kam heute die Frage auf, wie man die die Zahlen zwischen 1 und 500 ausgibt, die durch 2 und 5 teilbar sind. Das wurde genauso ausformuliert, statt zu erkennen, dass durch fünf nur Zahlen teilbar sind, die hinten 5 oder 0 stehen haben und von den beiden Ziffern nur die 0 durch zwei teilbar ist. Ein guter Compiler kann diese Schleifen schon komplett auflösen, so dass nichtmals die Schleife übrig bleibt, sondern nur 49 Ausgaben, ohne irgendeine Form der Prüfung. Das schneller hinzubekommen wird auch dem besten ASM-Programmierer schwer fallen.
    Während Du noch optimierst, wie Du die Wurzel aus 49 am schnellsten ziehst, kompiliert ein guter Compiler nur noch printf( "7" );

    Willst Du wirklich Assembler lernen, um kritische Teile zu optimieren? Enthielt eins Deiner Programme bereits kritische Teile? Bist Du in der Lage, die kritischen Parts zu bestimmen, oder portierst Du dann nach Gefühl auf Assembler?
    Lerne optimieren in C/C++. C ist so Assemblernah, dass Du nahezu identische Laufzeitverhalten zu (erfahrenen!) Assemblerprogrammierern hergestellt werden.

    Kickstart (Issue 2, June 1986) hat folgendes geschrieben: The only other alternative would have been to write the whole thing in Assembler - this would have resulted in a typcal assembler system, which is fast, efficient, streamlined, sexy, and not quite finished yet, sorry.



    Re: assembler

    Moritz - 14.12.2007, 22:39


    aber wenn man ein 3d-Spiel schreibt, läuft es erst mal ar***langsam. Erst wenn man z. B. die Teile zur berechnung der Vektoren oder andere oft benötigte Teile übersetzt wird es Schnell. Außerdem ist asm auch sonst sehr nützlich. Man kann damit zum Beispiel Kernel programmieren oder den eigenen Wünschen anpassen!!



    Re: assembler

    wirthi - 14.12.2007, 22:44


    Der Linux-Kernel ist fast ausschließlich in C geschrieben.

    Wenn 3D-Programme zu langsam sind liegt das meist an falschen Algorithmen. Wie Xin sagte sind Compiler um Häuser besser beim Optimieren als Menschen. Wenn dein 3D-Programm zu langsam ist, verwende DirectX oder OpenGL.



    Re: assembler

    Moritz - 14.12.2007, 23:10


    baaaaah Linux... dann versuche doch mal treiber in c zu programmieren!!



    Re: assembler

    wirthi - 14.12.2007, 23:29


    Wo liegt das Problem dabei?



    Re: assembler

    Xin - 15.12.2007, 01:27


    Moritz hat folgendes geschrieben: aber wenn man ein 3d-Spiel schreibt, läuft es erst mal ar***langsam. Erst wenn man z. B. die Teile zur berechnung der Vektoren oder andere oft benötigte Teile übersetzt wird es Schnell. Außerdem ist asm auch sonst sehr nützlich. Man kann damit zum Beispiel Kernel programmieren oder den eigenen Wünschen anpassen!!
    Alles, was Du hier beschreibst ist die Domäne von C und C++.

    Ein Kernel wird zu deutlich über 99% in C geschrieben, in Assembler werden noch sehr vereinzelt Routinen geschrieben, wo man wirklich noch einzelne Taktzyklen optimiert.
    C ist entwickelt worden, um Kernel zu programmieren, damit man den Kram nicht mehr in Assembler formulieren muss. Das war 1972. Damals wurden Computer in Kiloherz getaktet und trotzdem war C schnell genug, um die Betriebsysteme zu schreiben. Heutzutage wird C hochgradig optimiert und was heute als Computer museumsreif ist, hat mindestens 1GHz.

    Assembler kommt im Kernel ganz selten vor, das ist vernachlässigbar.

    3D Spiele werden vollständig in C/C++ abgebildet und das schon lange bevor Grafikkarten 3D Unterstützung hatten. Für 3D Grafik brauchst Du heutzutage kein definitiv kein Assembler mehr. Die schnellste Grafik erreichst Du über C Schnittstellen, die Du über Assembler nachbilden darfst: Aufwand ohne Nutzen.

    Moritz hat folgendes geschrieben: baaaaah Linux... dann versuche doch mal treiber in c zu programmieren!!
    Schon gemacht, für die Advantech 1750 PCI, eine digitale Steuerkarte.
    Keine Zeile Assembler benötigt.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    f-Tasten - gepostet von Moritz am Sonntag 02.12.2007
    Voice Controll - gepostet von Dirty Oerty am Donnerstag 12.04.2007
    Problem mit vp - gepostet von Moritz am Samstag 01.12.2007
    Ein Programm um eine Nachricht zu versenden? - gepostet von niGGo am Dienstag 27.03.2007
    Datei einlesen - gepostet von Blümchen am Mittwoch 07.02.2007
    wer kennt diese sprachen - gepostet von AQE89 am Montag 13.11.2006
    <iostream.h> mit <conio.h>, geht nicht ? - gepostet von EndSub am Montag 05.06.2006
    @Walgo - gepostet von Xin am Samstag 21.07.2007
    MP3 TAGS ? - gepostet von exbs am Donnerstag 04.01.2007



    Ähnliche Beiträge wie "assembler"

    OP Versicherung - isiwelt (Mittwoch 22.09.2010)
    Assembler - C-Dave (Donnerstag 05.10.2006)