Tak, to prawda. Ja raczej zastanawiałbym się, dlaczego większość kodu używa rejestrów różnych od R0 i R1. Przecież to R0 został wybrany jako tymczasowy.
Zakładam, że jest jakiś powód, dla którego tak wybrali. Zastanawiam się po prostu jaki. Wytłumaczenie, że zrobili to zanim wprowadzono do AVR instrukcje mnożenia, jest jakimś pomysłem – wtedy ten rejestr był dobry jak każdy inny.
Część instrukcji (ANDI, ORI, CBR, CPI, LDI, SBCI, SUBI, SBR, SER, STS, LDS, MULS) może działać tylko na rejestrach R16…R31. ADIW i SBIW mogą działać tylko na rejestrach R24…R31, poza tym R26…R31 są też używane jako wskaźniki (X, Y, Z). Wydaje mi się, że przed wprowadzeniem MUL, MULS, MULSU, FMUL, FMULS i FMULSU rozsądny był wybór rejestru z grupy R0…R7.
Sam chętnie bym się dowiedział, czemu wybrali R0 i R1 zamiast np. R6 i R7.
Kwestia przyjętego ABI.
U mnie najczęściej jednostkowa.
Jeśli mówisz, tak jak niżej piszesz, o rozwiązaniach profesjonalnych, to może i tak – lepiej utrzymywać zasoby dla jednej platformy, niż dla dwóch, jeśli ta druga miałaby być używana sporadycznie. W moim przypadku (hobbysty) sprzęt już mam, nauczyć też już się nauczyłem, a raczej nie podejrzewam, że ktoś inny będzie utrzymywał po mnie kod pisany hobbystycznie.
Zastanawia mnie to dłuższe pisanie softu. Nad czym spędzałeś czas pisząc na AVR, a nie spędzasz na STM32?
No to jest argument – oszczędzi się na elementach, a wyda się w procesie produkcji.
Może po prostu inaczej rozumiemy partyzantkę…
Ja nigdy nie miałem serca do 8051. Zawsze ta architektura wydawała mi się toporna. Może to wynika z tego, że miałem wcześniej duże doświadczenie w assemblerze dla x86.es2 pisze: ↑07 kwie 2022, 16:04Podobnie jak ja, tyle, ze AVR-ami zająłem się później. Wynikało to z tego, że trzeba było utrzymywać projekty na 8051. Najczęściej używałem 89C2051 (nawet emulator zbudowałem) oczywiście 89C5x, 89S8252 ale najbardziej podobał mi się P89C51RD2 Philipsa (wtedy jeszcze Philipsa). To był (wtedy) chyba JEDYNY, który mógł programować sam siebie. Późnej Atmel zrobił podobny jak już Philips był NXP.