[elektro] C optimalizálás probléma ARM kiegészítéssel

hg12345 hg12345 at freemail.hu
Fri Feb 10 19:00:28 CET 2012


Köszönöm az eddigi segítséget.

A hiba okát sikerült lokalizálni:
Az IT-ben van egy szubrutin hivás!
ami optimalizáció nélkül, csak a scratch regisztereket kezeli ARM esetén R0..R3, ezekkel a forditó olyan kódot generál, hogy nem kell menteni.
Optimalizáció esetén használja a R0..R7 regisztereket és az R12 de a szubrutinban csak a R4..R7 regisztereket menti. 

At IT-ben a HW automatikusan menti a R0..R3 és az R12, és az RL regisztereket, a forditó esetemben kiegészíti R4-R12 közötti rtegiszterek mentésével, (Az R12 nagyon fontos regiszter kétszer is menetik :-)
Az IT belűl használja az R12-s regiszter, és a meghívott függvény is, de az használat után nem állítja vissza a hivási értékre.

Szóval a hiba az R12 regiszter mentés hiányában van.

Ez valami speciális regiszter! (Supervisor hivásokkal kapcsolatos, de a rendszeremben ilyen nincs.)

Mi ilyenkor a teendő, asm betétet nem szeretnék használni, mert ha gondol egyet a fordító és R10 lesz akkor megint kereshetem a hibát.....





More information about the Elektro mailing list