C a rotace dokola
Jan Waclawek
konfera na efton.sk
Čtvrtek Duben 11 15:03:10 CEST 2024
A aj pre ARM:
https://godbolt.org/z/ePzPqcYjo
Je tam hrozne vela prologu a epilogu, ale skutocne je to skompilovane len
do jedinej instrukcie.
Ale nie pre 8-bit. Asi ziadny 16- ci 32-bitovy procesor nema nativnu
8-bitovu rotaciu.
Mimochodom, ani AVR nema nativnu 8-bitovu rotaciu (instrukcie co sa volaju
ROR a ROL robia defacto 9-bitovu rotaciu so zahrnutim C). U PIC nahodny
pohlad do nahodnych 3 DS hovori, ze len u PIC18. STM8 ma tych shiftov asi
pol tucta, vratane 16-bitovych, ale ani jedna z nich nie je rotacia.
Skusat to s '51 na SDCC nemam chut.
wek
----- Original Message ---------------
>http://ahcox.com/cpp/c-compilers-generating-rotate-instructions/
>
>---------- Původní e-mail ----------
>Od: Pavel Hudeček <edizon na seznam.cz>
>Komu: HW-list <hw-list na list.hw.cz>
>Datum: 11.04.2024 14:09:22
>Předmět: C a rotace dokola
>
>"Při sousedním tématu jsem si vzpomněl, že mi v C někdy dost chybí rotace
>dokola. Tzn. velká část assemblerů obsahuje posuny, které dělají totéž
>co << nebo >> v C a pak ještě rotace, kde bity na konci nemizí, ale
>přelezou na začátek.
>
>Když udělám kus kódu, který s pomocí << a nějakých obezliček realizuje
>rotaci 8bit proměnné a nezkomplikuju to, vzejde z optimalizace ta
>skutečná rotace jednou instrukcí bez pomocných věcí okolo?
>
>PH
"
Další informace o konferenci Hw-list