Amennyire én emlékszem, az ilyen esetekben a C fordító alapból "kisajátít" egy regiszter készletet.
Akkor foglalkoztam vele, amikor az ATMEGA16-ra írtam C és assembly vegyeset, alapvetően az interrupt rutinokba, hogy ne kelljen PUSH/POP-olni más regisztereket használtam - működött.
Egyébként dolgoztam olyan fordítóval is i386 aminek elő lehetett írni, hogy regiszterekben adja át az eljárások paramétereit és a visszatérési érték is regiszterbe ment (TopSpeed).