Frage

Meine Ziele konzentrieren sich auf die Entwicklung von Softwareanwendungen und vielleicht auf die Entwicklung von Webanwendungen, am wahrscheinlichsten jedoch auf Desktop-Anwendungen.Ich bin auf dem Weg, mich mit C/C++ besser vertraut zu machen, aber sollte ich noch viel tiefer gehen und mich mit Assembler befassen?Oder hätte ich keinen Nutzen für meine langfristigen Ziele?

War es hilfreich?

Lösung

Es wird wahrscheinlich keinen großen Nutzen bringen, wenn Sie keine direkte Bewerbung dafür haben.Wenn Sie Allgemeinwissen anstreben, ist C/C++ ein guter Ausgangspunkt.

Allerdings sind die Herausforderungen, die die Montage mit sich bringt, sehr interessant und es erfordert eine ganz andere Denkweise, um Dinge zu erledigen.

Ich habe ein wenig Zeit damit verbracht, den Zusammenbau des Z80 durch Programmieren zu erlernen TI-86 Taschenrechner.Der Z80-Befehlssatz ist ziemlich klein und die Neuheit, einen Taschenrechner in Assembler zu programmieren, ist sehr amüsant.

ticalc.org verfügt über viele gute Ressourcen TI-Assembly-Programmierung.

Andere Tipps

Ich bin wirklich überrascht, so viele „Nein“-Antworten auf diese Frage zu sehen.ich denke du sollen Montage lernen.

Ich erwarte nicht, dass Sie das jemals tun würden verwenden Montage direkt im Rahmen Ihrer Arbeit.Daraus folgt jedoch nicht, dass Sie es nicht lernen sollten.

Durch das Lernen von Assembly lernen Sie, was im Inneren des Computers vor sich geht.Es wird Ihnen helfen zu verstehen, was die Software tatsächlich tut.

Es geht wirklich um Professionalität.Werden Sie ein professioneller Softwareentwickler?Oder werden Sie ein Copy-and-Paste-Hack?Klar, Letzterer bezahlt vielleicht die Rechnungen, aber ein Profi zu sein ist viel befriedigender.

Jemanden sagen zu hören: „Nein, mach dir nicht die Mühe, Assembler zu lernen“, klingt in meinen Ohren wie „Hier ist das Kochbuch zum Brückenbauen.“Um eine Brücke zu bauen, müssen Sie sich nicht mit Physik oder Ingenieurwesen auskennen.Befolgen Sie einfach diese Rezepte.“ Nein, danke.

Tag auch,

Ich habe PDP-Assembler gelernt, als ich mein Elect gemacht habe.Ing.Abschluss Ende der 70er Jahre.Der letzte Assembler-Dialekt, den ich wirklich verwendet habe, hatte vier verschiedene Modi der Speicheradressierung.Der letzte Dialekt, den ich mir angesehen habe, hatte 17 Modi!

Ich bin mir nicht sicher, was Ihnen Learning Assembler heutzutage wirklich bietet.Damals war es für mich ein wesentlicher Bestandteil eines CS-Streams.eng.Grad.

Was das Erlernen von C++ angeht, würde ich mich einfach hinsetzen und durcharbeiten.Beschleunigtes C++“ das sich C++ als eigenständiges Format nähert und nicht als „C mit anderen Bits“.

Was C betrifft, würde ich einfach die neueste Version von durcharbeiten „C-Programmiersprache“ (auch bekannt als) K'n'R

Hoffe das hilft.

Prost, Rob

Wenn Sie nun nach Nanoprogrammierung gefragt hätten ...(-:

„Lohnt es sich, einen Versammlungsdialekt zu lernen?“

Ich habe die Montage professionell programmiert.M68k mit Faxgerät und Scanner.Auch Windows VxDs (virtuelle Gerätetreiber) gab es in Windows 3/3.1, Tage bevor sie einen echten Kernel hatten.

Wenn Sie Assembler programmieren, um gewöhnliche Software-Aufgaben auszuführen (Speicher kopieren, Zeichenfolgen verketten, Interrupt-Handler aufrufen usw.), ist das irgendwie interessant.Manchmal programmieren Sie eine Assembly so, dass sie von C-Code aufgerufen wird, um eine spezielle Aufgabe so schnell wie möglich auf einem bestimmten Prozessor auszuführen.Das kann interessanter sein, weil Sie nach Möglichkeiten suchen, jeden Zyklus, den Ihnen der Prozessor bietet, zu nutzen.Es ist Ihnen wichtig, was sich im L1-Cache des Prozessors befindet.Es ist Ihnen wichtig, Daten im Speicher auszurichten, um Cacheline-Treffer zu vermeiden (wenn ich mich an den Begriff erinnere).Sie legen Wert auf eine Dual-Pipeline-Prozessorarchitektur und darauf, die richtigen 2, 3 oder 4 Befehle in der richtigen Reihenfolge zu verwenden, damit 2, 3 oder 4 Dinge mit einem einzigen Taktschritt (einer dieser Hz im XgHz-Bereich des Prozessors) geschehen.

Wenn Sie Assembly programmieren, um benutzerdefinierte Hardware anzusteuern, erledigen Sie jetzt Dinge wie das Füllen eines 16-Byte-Speicherpuffers, das Einrichten einer DMA-Operation und das Übertragen dieser Daten an einen Controller, der so etwas wie die Ansteuerung einer Laserdruckertrommel ausführt.Und die Trommel dreht sich und kann nicht gestoppt werden und möchte ihre nächsten 16 Bytes innerhalb der nächsten 5us haben.Natürlich kann das in C oder C++ erfolgen.Aber die Beispiele sind endlos.

Ich würde vielleicht die letzte Hälfte Ihrer Frage abschneiden. "Lohnt es sich, einen Dialekt der Montage zu lernen?" Und machen Sie es "Lohnt es sich zu lernen?"

Wenn Sie das Programmieren lieben, beinhaltet die Art und Weise, wie Sie „Wert“ definieren, einen Teil der Liebe zum Programmieren.In diesem Sinne habe ich nie etwas im Programmieren gelernt und dachte nicht, dass es sich lohnt.Auch wenn ich es im Nachhinein nicht mehr oft benutzt habe.

In diesem Sinne würde ich fast sagen: Je schwieriger etwas zu lernen ist, desto „wertvoller“ ist es.

Aber abgesehen von dem ganzen Blödsinn glaube ich, dass es sich lohnt, sich zumindest ein wenig mit der Montage vertraut zu machen.Machen Sie weiter und finden Sie heraus, wie Sie die Assembly schreiben, um einige einfache stdlib-Routinen wie strcpy, memmove usw. zu ersetzen.Versuchen Sie dann, sie zu optimieren, indem Sie sie während des Timings millionenfach von C aus aufrufen.

Ich würde nicht anfangen, ASM zu lernen.Wenn Sie C/C++ lernen möchten, beginnen Sie damit.Mit zunehmender Qualität Ihres Codes stellen Sie möglicherweise fest, dass Sie ASM benötigen.In 99 % der Fälle ist das nicht der Fall, aber hin und wieder könnte es sein, dass Sie es brauchen.

Außerdem ist es hilfreich, ASM zu kennen, um zu verstehen, was C/C++ hinter den Kulissen tut.Aber noch einmal: Bis Sie fortgeschrittener sind, werden Sie es wahrscheinlich nicht brauchen.

Das habe ich getan, und ich glaube, es hat mir damals geholfen.Es hilft mir im Alltag nicht mehr, aber ich denke, es hängt von Ihrem Job ab.

Ich habe Assembler vor 20 Jahren auf einem Commodore und dann noch einmal an der Universität auf einem IBM-Großrechner gelernt.Ich kann nicht sagen, dass es mir in meinem aktuellen Job hilft.

Ich stimme Mark zu.Ich denke, es ähnelt dem Erlernen von MSIL beim Schreiben in C#, VB.NET oder einer anderen .NET-Sprache.Es ist hilfreich zu wissen, was unter der Haube vor sich geht, aber Sie könnten Ihr ganzes Leben damit verbringen, Anwendungen zu erstellen, die funktionieren, ohne sie jemals zu benötigen.

NEIN.Es sei denn, Sie möchten es zum Spaß tun, Sie müssen den Zusammenbau wirklich nicht lernen.

Es gibt einige Dinge, für die Sie sich mit Assembler auskennen müssen, etwa Treibererstellung, Betriebssystementwicklung, Exploit-Entwicklung, aber abgesehen davon glaube ich persönlich, dass Sie problemlos ewig programmieren können, ohne es zu wissen.

Wenn Sie Assembler lernen müssen, wissen Sie es – ich würde es nicht lernen, um es zu lernen.

Wenn Sie nicht verwaltetes C++ schreiben, ist es gelegentlich von unschätzbarem Wert, zumindest grundlegende x86-Assembly-, Binärzahlensysteme usw. zu kennen.Ich entwickle hauptsächlich C/C++ und muss gelegentlich Produktionscode auf Fehler debuggen, die so spezifisch für die vom Compiler erzeugte Maschinencodedarstellung sind, dass die einzige Möglichkeit, den Fehler zu finden und dann zu beheben, darin besteht, die dekompilierte Assembly zu lesen und stellen Sie fest, warum der Compiler es als solches generiert hat.

Weitere Informationen zur Montage finden Sie in der Frage: Wie lernt man Montage am besten?Speziell für jemanden, der Erfahrung mit dynamischen Sprachen hat.

Der Zusammenbau ist nicht sehr schwierig.Sobald Sie mit C vertraut sind, verbringen Sie ein oder zwei Tage damit, die Grundmontage zu erlernen.Sein Nutzen beim Debuggen ist enorm, und es macht Spaß, Code schreiben zu können, der die Geschwindigkeit des C-Äquivalents um den Faktor 10, 15 oder mehr übertrifft.

Ich würde nicht empfehlen, eine „moderne Assemblersprache“ zu lernen.

Allerdings weiß ich ein wenig darüber MOS 6510 Assembler und Durchsuchen des Zerlegten C64 Kernel, auch bekannt alsEs ist OS und BASIC Interpreter und hat mir sehr geholfen zu verstehen, was in einem Computer vor sich geht – Dinge wie Interrupts und Speicherseiten.

Dies könnte Ihnen möglicherweise helfen, Hinweise zu geben, wie Sie optimierten Code in anderen Sprachen schreiben können.Vieles davon wird jedoch bereits von modernen Compilern erledigt, daher würde ich dies nur empfehlen, wenn Sie daran interessiert sind, was in dieser Black Box vor sich geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top