Nagyon helyesen a fordító dönt.
A C függvények és assembly necces dolog. Hasadra ütött regiszterrel simán felülírhatsz C változókat.
- vagy tiszta C
- vagy tiszta asm, te foglalsz regisztert, de a függvényedben kizárólag asm lehet
- vagy kevert C és asm, de ilyenkor inkább a fordító foglaljon regisztert
Nálam eddig csak olyan bug volt, hogy az asm belekontárkodott a C regiszterekbe. Olyan nem volt, hogy a fordító rosszul allokált valamit. A gcc által generált kód ugye erősen verziófüggő, inkább ne piszkálj bele