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