Char nebo Int na 16-bit MCU

Zdravím,

mám otázku zda při používání 16-bitových MCU mám používat int místo char. Jde o to, že chci udělat třeba cyklus for, kterému by stačila proměnná char ale 16-ti bitový procesor asi pracuje rychleji s Int proměnnými, že?

Jak mám pak dělat pole znaků (string) Měl bych dělat pole CHARů nebo INTů?

Kde používat char a kde int v 16-ti bitových procesorech?

Díky…

16b MCU pracuje v zasade s 16b premennymi rovnako rychlo ako s 8b premennymi a 32b MCU v zasade s 32b premennymi rovnako rychlo ako so 16b a ako s 8b premennymi. Vsetko to zavisy od instrukcnej sady.

A keby aj 16b MCU ryhlejsie spracovaval 16b premenne, co na tom? Ved predsa ked 8b MCU rychlejsie spracuje 8b premennu ako 32b premennu, aj tak sa na spracovanie 32b premennej pouziva a casto sa este spara vacsinou casu nozickou v nose.

Inak to je jeden z hlavnych dovodov pouzia beznozickovych puzdier. Aby sa MCU nemal cim sparat v nose. Lebo dosledkom takej cinnosti sú BGA puzdra ktore maju na sebe hafo guliciek - z coho tieto su, sa uz iste pozorny citatel domyslel :slight_smile:

Ak mas dost RAM-ky, kludne nou plytvaj na ulozenie znaku do 16b premennej, ale nic tym neziskas.

No v zasade plati, ze na co potrebujes pole CHAR, pouzijes pole CHAR a na co pole INT, na to pouzijes pole INT. A na co potrebujes pole DOUBLE INT, na to pouzijes pole DOUBLE INT. Je jedno ci mas na doske 4bitovy alebo 64bitovy MCU.

Krásně vysvětlené…

Děkuju
Fano.

Až na to že nejde o to, jak s tím pracuje MCU, ale jak s tím pracuje překladač - a ten potřebuje vědět, co je jak dlouhý.

Používání datových typů dle C99 ( #include<stdint.h> ) se jeví býti více než vhodným, a člověk si nemusí lámat hlavu „jak to s tou délkou vlastně je”, protože to vidí hned.

en.wikibooks.org/wiki/C_Program … e/stdint.h

Dobrý nápad :slight_smile:

Jen asi bude chvíli trvat než se přeorientuju na makra :slight_smile:

Tak to jsi tu wikipedii asi špatně pochopil, makrem jsou definovány minimální a maximální hodnoty těch typů, jinak je to jen alternativní pohled na již existující typy

nongnu.org/avr-libc/user-man … tdint.html