[elektro] c procedure - register

hg12345 hg12345 at freemail.hu
Fri Feb 12 23:20:59 CET 2016


Ha nincs optimalizáció akkor nagyon egyszerű a kód, ha megoldható akkor érdemes o2 vagy o3 fordítani, de ez esetben már a debugger léptetés nem lesz érthető.



VFX <info at vfx.hu> írta:
>Hali!
>
>Köszi, ezt is kitanultam :)
>
>Így jó is lett:
>int proba(register int test)
>
>Mondjuk tré egy kódot fordít de működik.
>
>
>ÜDV. VFX.
>
>
>2016.02.12. 21:17 keltezéssel, hg12345 írta:
>> Hi,
>>
>> A fordító általában úgy optimalizál, hogy az első négy paraméter regiszterben adódjon át, a függvény visszatérési értéke meg mindig a 0. regiszterben lesz az ARM esetén.
>>
>> Ha magad akarod meghatározni mi legyen regiszterben átadva, akkor "register" módosítót kell használni.
>> Ezt használhatód paraméter, lokális és globális változóhoz.
>>
>> Arra érdemes vigyázni, hogy egyszerre mennyi regiszter foglalsz le, mert emlékeim szerint csak az első 8 regisztert tudod így meghatározni, utána már a fordító nem tudja ezt a módosítót értelemszerűen használni.
>>
>> A GCC-ben van lehetőség még meghatározni melyik regiszter használd... legalábbis a MCHIP PIC24 esetén volt.
>>
>> VFX <info at vfx.hu> írta:
>>> Hali!
>>>
>>> A nagy ARM fellángolásban vettem egy STM32 nucleo 334  board-ot.
>>> Letöltöttem egy rakat GNU C fejlesztőt, de C-ben nem vagyok túl jó.
>>>
>>> Lehet-e GNU C-ben procedurát vagy függvényt hívni úgy, hogy a
>>> paramétereket nem stack-ben hanem regiszterben adok át. x86-on lehet meg
>>> Blackfin-en is, de ARM GNU alatt lehet-e és hogyan?
>>>
>>>
>>> ÜDV. VFX.
>>>
>>> -----------------------------------------
>>>           elektro[-flame|-etc]
>>>
>> -----------------------------------------
>>            elektro[-flame|-etc]
>
>-----------------------------------------
>          elektro[-flame|-etc]



More information about the Elektro mailing list