( bucko | 2015. 04. 17., p – 14:27 )

No, azért ne túlozzunk! Inkább azt lehet mondani, hogy a mikrokontrollerekhez keszült C fordítók és libek minősítése: fostalicska. Van olyan C fordító, amelyik ilyet ír ki a függvény végére:
Instruction count 78
Straight-line exec time 61
Ugyan csak a PIC-eket használom, de vagyok olyan elfogult, hogy más mikrokontroller fejlesztőeszközeiről is rosszat tételezzek fel. ;)
Ami döbbenetes:
1) Legkisebb eltérésre - ami nem lenne szabad - teljesen más, igen gyakran ostobaságot fordít.
2) Rengeteg felesleges, és értelmetlen kódot fordít. Egyszer egy rövid szakaszon megvizsgáltam az egyes opciók, és átrendezés eredményét. Akkor csak egy push+pop jellegű utasításpár maradt feleslegesen.
3) Próbáltam libből "kódot lopni" - abszolút felesleges erőfeszítésnek bizonyult. Liter pálinka után, a gépnek háttal jobb kódot írok.
4) Első kísérletem az eeprom írásra: A dokumentációból kivettem a kódot - lefagy. Libből kiollóztam a kódot - hülyeséget ír. Elolvastam a doksit, megírtam, működik. Az eredeti cél időmegtakarítás lett volna. :(

Persze nem kizárt, hogy 30 évet meghaladó asm, és 20 évet meghaladó C gyakorlattal (nem hobbi) én nem értek semmihez.

Az asm nem hordozható, ezért a soros portról olvasást kénytelen voltam portolni PIC18-ra a 18 éve írt, 80186-ra készült asm forrásból. Természetesen interrupt felhasznalásával. Így a "Straight-line exec time" kb 50 órajel, memória felhasználás 5+buffer bájt. A memóriába a regiszter mentést is beleszámoltam.
Azértt ilyen hosszú, mert xon/xoff-ot is tud. :)