( bzt | 2024. 03. 09., szo – 16:01 )

Ha jól értem, akkor csak kötözködsz, mivel még egyáltalán nincs is mit értékelni. Küldj be előbb egy megoldást, aztán majd visszatérünk rá!

A befektetett időt egyébként szándékosan hagytam ki, hogy a programozói készségek ne számítsanak bele, csak a nyelv. Nekem a C megoldás kb. 15 percet vett igénybe, az Ada kb egy órát (mert vétettem egy hibát, és debuggolni kellett). Ezzel úgysem képes versenybe szállni senki itt a HUP-on, ezért nem is lenne fair, úgyhogy kihagytam a szempontok közül, és egységesen 1 hónapot adtam a megoldásra.

A teljesség kedvéért az egész versenykiírásra ráfordított idő:
- megtervezni a szabályokat kb. 2-3 óra volt (ezért ennyi, mert közben több nyelv dokumentációját is átnéztem ellenőrzés végett),
- a betöltőt elkészíteni kb. fél óra, ebben benne van az ELF és PE/COFF formátum lekezelése, a megszakításvezérlő és a PIT felprogramozása is. Ehhez felhasználtam korábbi projektek forrását, azért ilyen kevés.
- az Assembly referencia megoldást elkészíteni kb. 10-15 perc volt (ez nem számít ugye bele a versenybe, de a betöltő teszteléséhez szükség volt rá, hogy legyen egy jól behatárolt baseline)
- további 1 óra volt a tesztelés és debuggolás qemu és bochs virtuális gépeken. Bár a kiírás csak qemu-ra szól, egy másik virtuális gépen is leteszteltem a biztonság kedvéért.
- plusz kb. 10-15 perc volt megírni a HUP topikindító bejegyzést.

Szumma: kb. 1 munkanap, tokkal-vonóval. (csütörtökről péntekre éjjel álmodtam meg a versenyt, pénteken kb. délelőtt 10 óra magasságában álltam neki, és a poszt fél ötkor került ki a HUP-ra.)

Érdekesség: a tesztelés során előjött egy Clang bug MS fastcall ABI használata esetén (parancssori kapcsoló figyelmen kívül hagyása), ezért módosítottam az interfészt, és hozzáadtam a függvény által használt lokális változók méretét paraméterként az iretq() függvényhez, hogy egészen biztosan bármilyen nyelvből, bármilyen fordító által generált kód esetén használható és probléma nélkül meghívható legyen.