ok.
Niech będzie. Większość sytuacji optymalizacji kodu assemblera działa na poziomie odrębnego programu pracującego z listingiem, a nie assemblera.
Przykład z as86 w nasm wygląda następująco:
-O number
optimize branch offsets (-O0 disables, default).
optimize po polsku to optymalizacja
Naprawdę śmieszą mnie teksty assembler musi zachowywać się tak jak programista tego oczekuje w odniesieniu do mojego pytania o optymalizację podprocedur chociażby dlatego, że tego -O dla assemblera z zaświatów nikt nie ześle, a po to są dyrektywy assemblera decydujące jak ma tworzyć kod żeby wręcz do konkretnych procedur można było takie "optymalizacje" odnosić.
Doświadczenie tu obecnych jest dosyć specyficzne i nie mam zamiaru go negować. Mimo wszystko nie rozmawiamy jednak tutaj o ilości cykli dla DLI interrupt tylko o dosyć zaawansowanym i teoretycznie silnie w wielu miejscach opracowanym temacie jakim jest OS i mechanizmy, które dobry OS powinien wspierać i realizować. Rozmawiamy o praktycznych możliwościach realizacyjnych takiego "nowoczesnego" OS dla Atari w sposób, który pozwoli go wykorzystać praktycznie, a nie jako pokaz, że niby na 8bit się da. Win XP na Pentium I pewnikiem też się da uruchomić ;-) (akurat tego nie sprawdzałem).
Wiele "optymalizacji" może być przerzuconych na assembler (np. wyrównywanie bajtów dla silniejszych procesorów). W sztuczkach z atariki widziałem np. nop 2 bajtowy, którego wstawianie można przerzucić na assembler w zależności od użytej opcji co uogólnia i upraszcza kod. Akurat ten przykład z nop 2 bajtowym do makra wrzucić można łatwo.
Moja propozycja z inline procedur tak prosta w przypadku modyfikowanego kodu w realizacji nie jest i nie widze przeciwskazań zrobienie jej jako automatycznie realizowalnej przez assembler.
Sens jest podwójny takiego assemblera. Mógłby np. tworzyć przenośny kod pomiędzy różnymi wersjami 6502, a nawet nie wszystkie Atarki mają owego 2 bajtowego "NOP-a" (dokładniej 3 bajtowego, 2 bajty argumentu).