Mam trzy lub cztery procedury asemblera (w źródle około 20 MB) w moich źródłach w pracy. Wszystkie z nich są SSE (2) i są związane z operacjami na (dość dużych - pomyśl o 2400x2048 i większych) obrazach.
Hobby pracuję nad kompilatorem i tam masz więcej asemblera. Biblioteki środowiska wykonawczego są dość często pełne, większość z nich ma do czynienia z rzeczami, które są sprzeczne z normalnym reżimem proceduralnym (jak pomocnicy wyjątków itp.)
Nie mam żadnego asemblera do mojego mikrokontrolera. Większość współczesnych mikrokontrolerów ma tak wiele urządzeń peryferyjnych (liczniki sterowane przerwaniami, nawet całe kwadraturowe enkodery i szeregowe bloki konstrukcyjne), że używanie asemblera do optymalizacji pętli często nie jest już potrzebne. Przy obecnych cenach flash to samo dotyczy pamięci kodów. Istnieje również wiele różnych urządzeń zgodnych ze stykami, więc skalowanie w górę, jeśli systematycznie kończy się moc procesora lub przestrzeń flash, często nie stanowi problemu
Chyba że naprawdę wysyłasz 100000 urządzeń, a asembler programowania umożliwia naprawdę duże oszczędności, po prostu umieszczając chip flash o kategorii mniejszej. Ale ja nie jestem w tej kategorii.
Wiele osób uważa, że systemy wbudowane są usprawiedliwieniem dla asemblera, ale ich kontrolery mają większą moc procesora niż maszyny, na których opracowano system Unix . (Microchip dostarczany z mikrokontrolerami 40 i 60 MIPS za mniej niż 10 USD ).
Jednak wiele osób utknęło w spuściźnie, ponieważ zmiana architektury mikroczipa nie jest łatwa. Również kod HLL jest bardzo zależny od architektury (ponieważ wykorzystuje peryferia sprzętowe, rejestry do sterowania I / O itp.). Czasami są więc dobre powody, aby nadal utrzymywać projekt w asemblerze (miałem szczęście, że mogłem skonfigurować sprawy na nowej architekturze od zera). Ale często ludzie oszukują samych siebie, że naprawdę potrzebują asemblera.
Nadal podoba mi się odpowiedź, jakiej udzielił profesor, gdy zapytaliśmy, czy możemy użyć GOTO (ale możesz to przeczytać również jako MONTAŻ): „jeśli uważasz, że warto napisać 3-stronicowy esej o tym, dlaczego potrzebujesz tej funkcji, możesz jej użyć . Prześlij esej z wynikami ”.
Użyłem tego jako przewodniej zasady dla funkcji niskiego poziomu. Nie bądź zbyt ciasny, aby go używać, ale upewnij się, że odpowiednio go motywujesz. Podnieś nawet sztuczną barierę lub dwie (jak w eseju), aby uniknąć zawiłego rozumowania jako uzasadnienia.