Ich habe drei oder vier Assembler-Routinen (in einer Quelle von ca. 20 MB) in meinen Quellen bei der Arbeit. Alle von ihnen sind SSE (2) und beziehen sich auf Operationen an Bildern (ziemlich groß - denken Sie an 2400 x 2048 und größer).
Für das Hobby arbeite ich an einem Compiler, und dort haben Sie mehr Assembler. Laufzeitbibliotheken sind oft voll davon, die meisten haben mit Dingen zu tun, die dem normalen Verfahrensregime widersprechen (wie Helfer für Ausnahmen usw.).
Ich habe keinen Assembler für meinen Mikrocontroller. Die meisten modernen Mikrocontroller verfügen über so viel periphere Hardware (Interrupt-gesteuerte Zähler, sogar ganze Quadraturcodierer und serielle Bausteine), dass die Verwendung eines Assemblers zur Optimierung der Schleifen häufig nicht mehr erforderlich ist. Bei den aktuellen Flash-Preisen gilt das Gleiche für den Codespeicher. Außerdem gibt es häufig eine Reihe von Pin-kompatiblen Geräten, sodass das Hochskalieren, wenn Ihnen systematisch die CPU-Leistung oder der Flash-Speicherplatz ausgeht, oft kein Problem darstellt
Wenn Sie nicht wirklich 100000 Geräte ausliefern und der Assembler programmiert, können Sie wirklich große Einsparungen erzielen, indem Sie einfach einen Flash-Chip einbauen, der eine Kategorie kleiner ist. Aber ich bin nicht in dieser Kategorie.
Viele Leute denken, dass Embedded eine Ausrede für Assembler ist, aber ihre Controller haben mehr CPU-Leistung als die Maschinen, auf denen Unix entwickelt wurde. (Mikrochip mit 40 und 60 MIPS- Mikrocontrollern für unter 10 USD ).
Viele Menschen stecken jedoch im Erbe fest, da es nicht einfach ist, die Mikrochip-Architektur zu ändern. Außerdem ist der HLL-Code sehr architekturabhängig (da er die Hardware-Peripherie, Register zur Steuerung von E / A usw. verwendet). Es gibt also manchmal gute Gründe, ein Projekt weiterhin in Assembler zu verwalten (ich hatte das Glück, Angelegenheiten auf einer neuen Architektur von Grund auf neu einrichten zu können). Aber oft täuschen sich die Leute, dass sie den Monteur wirklich brauchen.
Ich mag immer noch die Antwort eines Professors, als wir fragten, ob wir GOTO verwenden könnten (aber Sie könnten das auch als ASSEMBLER lesen): "Wenn Sie der Meinung sind, dass es sich lohnt, einen dreiseitigen Aufsatz darüber zu schreiben, warum Sie die Funktion benötigen, können Sie sie verwenden Bitte reichen Sie den Aufsatz mit Ihren Ergebnissen ein. "
Ich habe das als Leitprinzip für Lowlevel-Funktionen verwendet. Seien Sie nicht zu eng, um es zu benutzen, aber stellen Sie sicher, dass Sie es richtig motivieren. Wirf sogar ein oder zwei künstliche Barrieren auf (wie den Aufsatz), um verschlungenes Denken als Rechtfertigung zu vermeiden.