1. Foren
  2. » Kommentare
  3. » PC-Hardware
  4. » Alle Kommentare zum Artikel
  5. » Prozessoren 2010: Die Fusion…

Programmierung in Assembler?

Anzeige
  1. Thema

Neues Thema Ansicht wechseln


  1. Programmierung in Assembler?

    Autor Nanuk 02.01.10 - 22:38

    Hallo :)

    Hat jemand Infos oder Links zum neuen Befehlssatz dieser Prozessoren? Besonders wenn man auf den GPU-Teil zugreifen will.

    Schönen Abend noch. :)

  2. Re: Programmierung in Assembler?

    Autor TTP 02.01.10 - 23:42

    bei nVidia heißt es CUDA.
    google doch mal nach CUDA, da findest du ganz viel

  3. Re: Programmierung in Assembler?

    Autor ich_ 02.01.10 - 23:57

    Nur eine Frage:
    Warum sollte man im Jahre 2010 noch in Assembler programmieren? Solange die Sprache zur Ausführung keine VM braucht, ist der Geschwindigkeitsverlust minimal (aka nicht fühlbar, kaum messbar).
    Desweiteren kann man Assembly praktisch nicht ohne immensen Aufwand portieren.

  4. Re: Programmierung in Assembler?

    Autor Nanuk 03.01.10 - 01:54

    Cuda kenn ich, und das ist ja nicht gerade Assembler. Wenn jetzt allerdings ne GPU integriert wird, hat man dann in ner Quelldatei Assemblercode gemischt mit Cuda-artigem-Code oder gibts extra Befehle für die GPU?

    Trotzdem, danke für die nette Antwort. Schönen Abend noch :)

  5. Re: Programmierung in Assembler?

    Autor Nanuk 03.01.10 - 02:06

    Assembler hat (wie C, Java, Python, etc.) alles Vor- und Nachteile. Die Portierbarkeit ist n Nachteil von Assembler. Stimmt. Aber es sei dir gesagt, dass kritische (auch etwas größere) Programmabschnitte locker mal um mehrere 100% schneller laufen, wenn mans in Assembler macht.

    In 99,9% aller Fälle ist man vielleicht besser mit C (oder sonstewas) beraten ... aber in 0,01% (oder noch weniger) eben nicht.

    Man kann nichts pauschalisieren.

    Die meisten Leute hören "Compileroptimierung" und vertrauen blind darauf. Compiler machen sehr sehr oft großen Mist, vor allem an kritischen stellen. Und bevor jetzt jemand "Quellen?" oder "Beweise!" schreit, kann ich nur sagen: Disassembliert doch bitte einfach mal n kleines Programm. (So "Hello, World" Größe, vielleicht mit n paar Anweisungen mehr)

    Der Compiler optimiert natürlich, aber da der Compiler oft nicht weiß, was der Programmierer ganau möchte, kann er gar nicht optimieren.

    Also: Egal was man wie wo wann programmiert, man muss einfach abwägen, was am geeignetesten ist.

    Schönen Tag noch an alle :)

    PS: Wenn man Trojaner oder Malware programmiert, sollte man das sowieso immer mit Assembler machen. Schön klein und schnell. Einen simplen Server in weit unter 1KB bekommt man anders nicht hin. :)

  6. Re: Programmierung in Assembler?

    Autor Jovis 03.01.10 - 03:40

    Mit Assembler verdient man heute in der IT nicht sein Geld.
    Wenn man sich die Stellenanzeigen mal anschaut, kann man sich selber ein Bild von machen.

    Gibst du ja schon selber zu, wenn du sagst dass man mit C in 99,9 % der Fälle gut beraten ist.

    C ist quasi das heutige Assembler. Wenn man in Java ein Programm entwickelt, benutzt man das JNI und schreibt die kritischen Stellen mit C, wenn man Lust und Zeit hat. Oder schöneres Beispiel C++/CLI. Da vermischst du managed und nativen Code. Die wirklich kritischen Stellen, falls es welche gibt, machst du dann mit nativem Code.


    Um Java oder .Net kommt heutzutage keiner mehr drumrum.

  7. Re: Programmierung in Assembler?

    Autor Nanuk 03.01.10 - 05:38

    Gerade mit JNI ist Assembler genial. Wenn ich ne DLL oder lib mit C entwickle ist die mindestens 12 bis 15 KB groß. Mit Assembler isses ein bis zwei Kilibyte.

    C ist bei Berechnungen usw. gerade mal doppelt so schnell wie Java. Dank JIT is Java schon Recht flott und reicht für fast alles. Wenns dann wirklich um Geschwindigkeit geht, dann doch bitte richtig und mit Assembler.

    Beispiel für MD5 (auf nem älteren Rechner; is aber egal, kommt nur aufs Verhältnis an):

    Referenzimplementierung in ANSI C ca. 2,3 Mio Hashes pro Sek.

    Java mit MessageDigest ca. 1.2 Mio Hashes pro Sek.

    Assembler (optimiert von mir und zwei anderen): ca. 4,3 Mio Hashes pro Sek.

    Also bei Desktops oder Servern is Assembler (vielleicht) nicht so oft von Nöten. (Abgesehen von Low-Level-Sachen und Treiberentwicklung?)

    Bei Mikrocontrollern kommt man nicht drum rum. (Aber darum gehts hier ja eigentlich nicht.)

    PS: Gerade WEIL ich mit Assembler arbeite verdiene ich ein vielfaches von nem normalen Entwickler. Man sollte immer was Exotisches oder irgend eine Spezialisierung haben. :)

  8. Re: Programmierung in Assembler?

    Autor firehorse 03.01.10 - 06:08

    Nanuk schrieb:
    --------------------------------------------------------------------------------
    > Cuda kenn ich, und das ist ja nicht gerade Assembler. Wenn jetzt allerdings
    > ne GPU integriert wird, hat man dann in ner Quelldatei Assemblercode
    > gemischt mit Cuda-artigem-Code oder gibts extra Befehle für die GPU?

    Muss wohl. Zumal CPU und GPU immer noch getrennt auf dem Chip sind. Diese werden sich, wie man der Aussage des Updates entnehmen könnte, auch getrennt ansprechen lassen.

    > Trotzdem, danke für die nette Antwort. Schönen Abend noch :)

    Guten morgen wohl eher :)

  9. Re: Programmierung in Assembler?

    Autor firehorse 03.01.10 - 06:15

    Nanuk schrieb:
    --------------------------------------------------------------------------------
    > PS: Gerade WEIL ich mit Assembler arbeite verdiene ich ein vielfaches von
    > nem normalen Entwickler. Man sollte immer was Exotisches oder irgend eine
    > Spezialisierung haben. :)

    Bin zwar kein Assembler-Entwickler, kann mir aber gut vorstellen was Du meinst. Die Klasse macht es, nicht die Masse ;)
    Es nicht viele Stellenangebote in solchen Bereichen. Aber es gibt auch nicht viele Unternehmen welche sich damit beschäftigen.

  10. Re: Programmierung in Assembler?

    Autor FunnyName 04.01.10 - 13:26

    Nur weil es nicht viele Stellenanzeigen gibt heißt es nicht dass kein Bedarf da ist. Einen mittelmäßigen Java/C++ Entwickler findest du heute an jeder Ecke. Die Kosten fast nix und sind im Bedarfsfall austauschbar.

    Assembler (u. Cobol ) Programmierer können sich bei uns 'ne goldene Nase verdienen. Die können ihre Arbeitsbedingungen diktieren etc. weil sie eben nicht austauschbar sind, weil es viel zu wenige gibt.

    Und in Sachen Geschwindigkeit ist Assembler immer noch um ein vielfaches besser als Java oder C. Klar braucht man nicht an jeder Stelle optimale Performance. Aber wenn das kritisch ist, ist Assembler sicher das Maß der Dinge.

  11. Re: Programmierung in Assembler?

    Autor Trollversteher 04.01.10 - 13:48

    >Und in Sachen Geschwindigkeit ist Assembler immer noch um ein vielfaches besser als Java oder C. Klar braucht man nicht an jeder Stelle optimale Performance. Aber wenn das kritisch ist, ist Assembler sicher das Maß der Dinge.

    1.) Java ist eine Interpretersprache. Also ganz andere Anforderungen, ganz anderer Anwendungsbereich. Also eine vergleichende Formulierung wie "um vieles besser" ist hier ganz sicher nicht angebracht.

    2.) C ist eine Compilersprache. Also auch die Formulierung "Java oder C" ist hier Quatsch. Dazu kommt, dass C/C++ Compiler auf den heute verwendeten PC-Prozessoren (AMD oder Intel) wesentlich optimierteren Code produzieren als es irgendein Assembler Programmierer hinbekommen könnte. Die Optimierungsmechanismen sind nämlich mittlerweile derart Komplex, dass kein normaler Mensch mehr wirklich durchblickt, in welchem Zustand sich ein Prozessor sich zum Zeitpunkt des Aufrufens seiner Routine gerade befindet - das können Compiler viel besser, weil die den "Überblick" bewahren können.

    Assembler ist nur noch in den Bereichen Embedded- und Limited Device Entwicklung wirklich notwendig - also überall dort, wo kleine, einfache Prozessoren (z.B. ARM) mit beschränkten Ressourcen im Einsatz sind, wie in der Unterhaltungselektronik oder der Industrieautomatisierung. Aber selbst dort sind komplexere Systeme mit richtigem Betriebssystemen im Vormarsch (z.B. TV-Receiver, Handys) und damit schwinden auch dort immer mehr die Einsatzbereiche für Assemblerprogrammierung.

  12. Re: Programmierung in Assembler?

    Autor Trollversteher 04.01.10 - 13:54

    >Die meisten Leute hören "Compileroptimierung" und vertrauen blind darauf. Compiler machen sehr sehr oft großen Mist, vor allem an kritischen stellen. Und bevor jetzt jemand "Quellen?" oder "Beweise!" schreit, kann ich nur sagen: Disassembliert doch bitte einfach mal n kleines Programm. (So "Hello, World" Größe, vielleicht mit n paar Anweisungen mehr)

    Das ist ein Vorurteil, welches schon lange nicht mehr richtig ist. Heutige Compiler (zumindest auf PC Systemen) sind nachgewiesenermassen erheblich effizienter was Performance betrifft, als jedes Assemblerprogramm was Du schreiben könntest. Dazu sind die Prozessoren und deren Optimierungsmechanismen (z.B. Precaching oder Branchprediction, um mal ein paar schon etwas ältere Mechanismen zu nennen) mittlerweile viel zu komplex, als das man tatsächlich noch "per Hand" optimieren könnte um noch ein paar Zyklen mehr rauszuholen.

  13. Re: Programmierung in Assembler?

    Autor Luki 04.01.10 - 14:45

    Trollversteher schrieb:
    --------------------------------------------------------------------------------
    > >Die meisten Leute hören "Compileroptimierung" und vertrauen blind darauf.
    > Compiler machen sehr sehr oft großen Mist, vor allem an kritischen stellen.
    > Und bevor jetzt jemand "Quellen?" oder "Beweise!" schreit, kann ich nur
    > sagen: Disassembliert doch bitte einfach mal n kleines Programm. (So
    > "Hello, World" Größe, vielleicht mit n paar Anweisungen mehr)
    >
    > Das ist ein Vorurteil, welches schon lange nicht mehr richtig ist. Heutige
    > Compiler (zumindest auf PC Systemen) sind nachgewiesenermassen erheblich
    > effizienter was Performance betrifft, als jedes Assemblerprogramm was Du
    > schreiben könntest. Dazu sind die Prozessoren und deren
    > Optimierungsmechanismen (z.B. Precaching oder Branchprediction, um mal ein
    > paar schon etwas ältere Mechanismen zu nennen) mittlerweile viel zu
    > komplex, als das man tatsächlich noch "per Hand" optimieren könnte um noch
    > ein paar Zyklen mehr rauszuholen.


    100 Punkte - auf PC Systemen behaupte ich auch, dass man fast immer gegen den Compiler verlieren wird...

  14. Re: Programmierung in Assembler?

    Autor Trollversteher 04.01.10 - 14:59

    >100 Punkte - auf PC Systemen behaupte ich auch, dass man fast immer gegen den Compiler verlieren wird...

    Eben. Imho hat Assembler heutzutage, mal angesehn von der Wartung älterer Software, nur noch in der Embedded- und Kleinstsystem-Entwicklung eine Daseinsberechtigung. Und spielt natürlich auch im Konsolenbereich noch eine Rolle, vor allem wenn exotische Prozessoren zum Einsatz kommen, bei denen die Compilerentwicklung noch nicht so fortgeschritten ist (z.B. beim Cell der PS3).

  15. Re: Programmierung in Assembler?

    Autor Ich Ich 04.01.10 - 15:05

    Luki schrieb:
    --------------------------------------------------------------------------------
    > 100 Punkte - auf PC Systemen behaupte ich auch, dass man fast immer gegen
    > den Compiler verlieren wird...

    Und dank dem 'fast' hast du sogar zugegeben, dass es eben doch sein kann, dass ein guter ASM Entwickler besser vorankommt als ein compiler. pipeline stalling soll da mal genannt sein: versuch mal nen compiler zu finden, der da nicht strauchelt. Der Intel compiler ist da schon mal ne Ecke besser als gcc zum beispiel... )

  16. Re: Programmierung in Assembler?

    Autor Bernd R 29.01.10 - 13:36

    @Nanuk
    >Beispiel für MD5 (auf nem älteren Rechner; is aber egal, kommt >nur aufs Verhältnis an):

    welche CPU war das ?
    Du solltest das schon mal auf modernen CPU testen, würde mich interessieren und Werte posten.moderne CPU haben bessre Out of Order und register renaming features.Die I7 CPu´s sind da nochmal besser.und das ist auch der Grund warum X86 ab AMD Athlon und Intel ab Core mehr Performance/MHZ liefern.

    Daher ist es für alte CPU wichtiger, dass der Code optimial geschrieben ist.Neue sind da unempfindlicher.

    allerdings haben moderne X86 so ne Art risc Core und machen nur wenig asm Befehle des X86 Befehssatz schnell.Die muss man kennen.

    z.b Ziel Register die nicht das volle 32 bit (eax) register nutzen sondern nur 16 bit ax oder gar ah oder al sind auf vielen CPU sehr langsam.

    das Compiler bei den wohl bekannten Benchmarks am besten sind, liegt an der Natur der Sache, weil ein Peephole Optimizer nach Codemustern sucht.

    Und die Codemuster von specint oder specfp und andre Benches kennt jeder compiler und macht da den besten Code ;-)

    ansonsten ist man in asm immer noch am schnellsten, wenn man weis was man tut, aber mit moderen CPU denke ich nicht, dass das mehr als 20-30% bringt,

    ausser wenn man SIMD (SSE) assembler macht, da bringt es mehr das ist auch der Grund warum Programme wie ffmpeg viel SIMD assembler haben

  17. Re: Programmierung in Assembler?

    Autor Schwarzes Tigerle 12.03.10 - 17:09

    Wenn Compiler so viel besser optimieren als Assembler-Programmer, warum merkt man dann nichts davon in der Ausführungsgeschwindigkeit?

Neues Thema Ansicht wechseln


Entschuldigung, nur registrierte Benutzer dürfen in diesem Forum schreiben. Klicken Sie hier um sich einzuloggen


Meistgelesen
  1. Libreoffice

    "Wir wollen Nutzer in die ODF-Welt ziehen"

  2. Browser

    Kauft Facebook Opera?

  3. Datenschutz

    Neue EU-Regeln zu Cookies treten in Kraft

  4. Samsung Galaxy S3

    Siri braucht sich nicht zu fürchten

  5. Schmerzlos

    MIT-Forscher entwickeln Injektor mit Lorentzkraft-Antrieb


Meistkommentiert
  1. Kommentare: 222 | letzter Beitrag 26.05. 23:51

  2. Kommentare: 162 | letzter Beitrag 10:16 Uhr

  3. Kommentare: 94 | letzter Beitrag 10:58 Uhr

  4. Kommentare: 66 | letzter Beitrag 08:55 Uhr

  5. Kommentare: 64 | letzter Beitrag 26.05. 17:51

Mehr



Haben wir etwas übersehen?

E-Mail an news@golem.de


Lollipop Chainsaw angespielt: Blond und brutal
Lollipop Chainsaw angespielt
Blond und brutal

Der japanische Spieldesigner Goichi Suda - Fans sagen schlicht "Suda 51" - ist für schräge Actionspiele bekannt. Sein nächstes Werk schickt ein scheinbar braves Schulmädchen in den Kampf gegen Zombies.

  1. Spielepublisher in Not dtp Entertainment meldet Insolvenz an
  2. US-Umsätze im März 2012 Spielemarkt schrumpft weiter
  3. Starlight Inception Lucas-Arts-Veteran kämpft für das Weltraum-Action-Genre

Samsung XE300: Google Chromebox versehentlich ausgeliefert
Samsung XE300
Google Chromebox versehentlich ausgeliefert

Weitgehend unbemerkt hat der US-Händler Tigerdirect die ersten Chromebox-Systeme von Google ausgeliefert. Für 330 US-Dollar bekommt der Nutzer recht gute Hardware in Nettop-Form, die sehr viel leistungsfähiger ist als die des Chromebook mit ChromeOS.

  1. Googles Aura Chromium OS mit klassischem Desktop

IMHO: Gema und Youtube - der Kampf ums Urheberrecht
IMHO
Gema und Youtube - der Kampf ums Urheberrecht

Nach der Urteilsverkündung im Rechtsstreit zwischen Youtube und Gema fühlten sich beide Seiten als Gewinner. In Wahrheit gibt es aber nur einen Verlierer, bloggt Medienrechtsexperte Thomas Hoeren: die Gema.

  1. Kulturelles Gedächtnis Wie speichern wir das Internet?
  2. Urheberechtsdebatte Piratenpartei legt Zehnpunktekatalog vor
  3. Urheberrecht SPD plädiert für "Vergüten statt verbieten"

  1. Browser: Kauft Facebook Opera?
    Browser
    Kauft Facebook Opera?

    Ein britisches Blog will erfahren haben, dass Facebook den norwegischen Browserhersteller Opera Software kaufen will. Beide Unternehmen wollen sich dazu nicht äußern.

  2. Datenschutz: Neue EU-Regeln zu Cookies treten in Kraft
    Datenschutz
    Neue EU-Regeln zu Cookies treten in Kraft

    Am 26. Mai 2012 treten neue Datenschutzregeln der EU in Kraft. Websitebetreiber und Werbenetzwerke müssen Nutzer um Erlaubnis fragen, wenn sie Cookies setzen.

  3. Libreoffice: "Wir wollen Nutzer in die ODF-Welt ziehen"
    Libreoffice
    "Wir wollen Nutzer in die ODF-Welt ziehen"

    Libreoffice könne mehr als Openoffice und biete Entwicklern zudem Vorteile, sagte Michael Meeks auf dem Linuxtag 2012. Außerdem spricht er mit Golem.de über Libreoffice-Online, woran er derzeit arbeitet.


  1. 14:48

  2. 14:29

  3. 14:24

  4. 12:30

  5. 12:23

  6. 18:49

  7. 18:33

  8. 18:08