> Le a kalappal! Pár nap alatt egy bootloader ami ráadásul teli van assembly kóddal is, nem semmi. Egyszerűen lenyűgöznek azok az emberek akik képesek ilyen low level cuccokat írni.
Kösz!
> biztos vagy benne hogy jó az abban a formában?
Igen.
> Csak a loader.c 1952 sor
Na de annak a negyede komment! És egyébként is, az szerinted sok lenne ennyi minden funkcióra (ne felejstd el, tényleg ez az összes kód, nincs más)? Csak összehasonlításképp, a grub
ansic: 275224 (92.31%)
asm: 11345 (3.81%)
és akkor ebben a függőségek (mtools, xorriso stb.) benne sincsenek! De legyünk megengedőbbek, nézzük el a modulokat meg a többi függőséget, vegyük csak a betöltőt magában (sloccount grub-core/loader) és csak azzal hasonlítsuk: az még úgy is 7.8-szorosa, 15389 sor... (pedig nem is jó az összehasonlítás mert a grub-core/loader önmagában nem is működőképes, míg a Simpleloader loader igen).
A teljes Simpleboot ezzel szemben mindössze:
ansic: 3461 (96.03%)
asm: 143 (3.97%)
Amiből a loader:
ansic: 1560 (100.00%)
> teletűzdelve 100+ soros függvényekkel
Szerinted melyik függvény az, ami nem egy jól definiált feladatot lát el, precízen definiált absztrakciós rétegként és jól meghatározott ki-bementi értékekkel? Nem kötözködök, tényleg érdekelne, szerinted melyik.
És ha már grub, a grub-install.c-ben a "main()" függvény 1096 sor! Ehhez képest a simpleboot.c-ben a "main()" csupán 195 sor (amiből 100 sor egyetlen "if (verbose)" printf tenger a végén, ami ellen nem tudsz mit tenni, dump esetén ki kell írni a dolgokat).
> Jövőbeli maintainerek szerintem megköszönnék ha kevésbé lenne egybeömlesztve a kód.
Haha, ne érts félre, de úgy bírom, amikor valakinek fogalma sincs arról, hogy milyen ára van, ha kismilló függvényre robbantjuk szét a kódot. Lehet hogy egy hostolt alkalmazásnál belefér, hogy elherdáljuk az erőforrásokat, azonban egy ilyen alacsonyszintű kódnál ez nagyon nem kivitelezhető.
Hogy számszerüsítsük: egyetlen függvényhívás legalább 16 byteot foglal a vermen, minimum, mindenképpen (stack frame és visszatérési érték); plusz ehhez jönnek még a lokális változók, amiket ugye függvényeken átívelve nem tudsz újrahasznosítani (értsd: minden függvénynek külön le kell foglalnia egy i ciklusváltozót). Sok apró függvény hívása pillanatok alatt felzabálná azt a 256 byteot, amit engedélyeztem a veremnek...
Sokan azt hiszik, hogy a szépen írt kód a fontosabb, de ez nem igaz, a hatékony és jól működő kód az, ami igazán fontos. Alacsony szinten meg hatványozottan igaz ez. Érdemes elolvasni a témában, mert nem csak dumál ez a cikk, hanem konkrét mérésekkel bizonyítja, mennyire borzalmas végeredményt képes produkálni valami, ami az "okosak" szerint "clean code": https://www.computerenhance.com/p/clean-code-horrible-performance
Ha pedig valakinek az bántja a szemét, hogy hosszúak a sorok, akkor bármelyik IDE egyetlen kattintással áttördeli, emiatt nem érdemes zsörtölődni.
> Ezt leszámítva, gratz!
Köszönöm mégegyszer!