[elektro] PIC C32 shift right
flaist
flaist at gmail.com
Thu Jan 17 04:23:19 CET 2013
Szia!
1980-ban még 8080-al kezdtem.
Akkor még a C csak kiváltságosoknak jutott.
így a bit toszogatás jó néhány verzióját használtam már több féle
assembly-ben.
RRC RRCF RRNCF SHR SAR ROR RR SRAV SRA SRL SRLV
Na de a bajom az volt, hogy C18 és C32 teljesen másképp működik a jobbra
shiftelésnél előjeles változóval.
Amit eddig úgy hittem hogy egységes, de most olvasom az ANSI-C könyvet, és
azt írja, hogy ez "számítógép" függő lehet.
És a PIC18 és PIC32 nem egyforma "számítógép" !
Most már megtanultam.
-----Original Message-----
From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On Behalf
Of Info
Sent: Thursday, January 17, 2013 12:41 AM
To: flaist
Subject: Re: [elektro] PIC C32 shift right
Szia!
> Tegnap C32 fejlesztéskor szívtam az alábbival.
> Aztán hosszas nyomozás után megtaláltam a lenti megjegyzést..
> Eddig C18 használtam ott nem hozta be az előjel bitet, még
> bosszankodtam is anno miatta.
> Melyik az elterjedtebb verzió?
> Mennyire jó ötlet így variálni az alap műveleteket (pláne azonos IDE-ben)
?
Nos, látom nem ismered az assembly nyelvet, többnyire 3 léptető utasítás
van, ezeket variálhatod:
- logikai (belépő bit 0)
- aritmetikai (belépő bit nem lesz, marad ami volt)
- "carry"-n keresztül (belépő bit carry flagból) a kilépő bitek többnyire a
carryba mennek, de ez sem általános, most mindegy is.
Szóval amit leírtál jelenséget teljesen természetes, hiszen a char előjeles
(ha csak a fordítási opciókban mást nem adsz meg).
Ezért aritmetikai léptetést használt.
Az unsigned char-nál pedig felismerte, hogy simán tologatni akarsz ezért
logikai léptető utasítást fordított a kódba.
A harmadik nem szokott elérhető lenni C-ből, az a fordító belső magánügye.
Szal a fordítód jól működik.
-----------------------------------------
elektro[-flame|-etc]
More information about the Elektro
mailing list