[elektro] C (ARM) kérdés

hg12345 hg12345 at freemail.hu
Sun Nov 28 14:29:56 CET 2010



Pipi <lista at puzsar.hu> írta:
>2010.11.28. 10:12 keltezéssel, hg12345 írta:>
> A KEIL C-ben nem találom, hogy a regiszter készletből melyek azok amit a fordító szabadon használ....(amiket nem kell mentegetni) Nem tudom mi a neve igy nehéz rákeresni.>
>>
> A GNUC és  PIC24 esetén az első 8 regisztert használta szabadon (R0...R7), de ezt az ARM-oknál nem találom.>
az nem jó hogy deklarálsz egy regiszterváltozót és azt használod?>
http://www.keil.com/support/man/docs/armccref/armccref_BABEIDCA.htm>
http://www.keil.com/support/man/docs/armccref/armccref_CJAHJDBG.htm>
szerintem veszélyes abban bízni hogy mit nem használ (most? és a jövő verzióban)>
Globálisan nem szivesen foglalnám le a uP regisztereit !?. 

Amúgy ezt minden C hivatalból igy csinálja, a regiszter készlet első valahány regiszterét mint munkaregiszter használja, ezek szabadon használhatok az adott rutinon belül.... Ha nem tudod meguszni az ASM betétet, akkor ezeket a regiszterek ASM-ben is szabadon használhatod elözeters mentés és visszaállítás nélkül.... (Mivel ezek idő és hely igényes müveletek).

Az ARM-nál annyire nem egyértelmű, mivel 16 regisztere van, de ha THUMB üzemmódban használod akkor ez csökken 8 + SP,LINK,PC-re, a 8 feletti regsizterek müveletekben csak korlátosan használhatok....
Még hozzájönnek a különböző CORTEX magosok ahol M0 és M3 szerint változnak az utasításkészletek..... 
Biztosabb lennék a dolgomban, ha látnám a leírásban... de addig is PUSH/ POP {r1-R8}   :-)))

>
>
-- >
Pipi>
http://www.puzsar.hu>
>
----------------------------------------->
          elektro[-flame|-etc]>



More information about the Elektro mailing list