TI は、Tiva-C (旧称 Stellaris) MCU のトピックに関するアプリケーション ノートを公開しています。
「はじめに」セクションの表には、パフォーマンスとサイズに影響を与える要因のリストが示されています。因子ラベル変数サイズは、「最適より小さい変数を使用すると、拡張に署名または署名解除するための余分な命令を意味する可能性があります...」と述べています。
また、「変数のサイズ」セクションの下に、次のように記載されています。
「ローカル変数がレジスターのサイズよりも小さい場合、通常、追加のコードが必要になります。Stellaris パーツでは、これは、サイズがバイトとハーフワード (それぞれ char と short int) のローカル変数に追加のコードが必要であることを意味します。 8 ビットまたは 16 ビットのマイクロコントローラでは、(大きすぎる問題を回避するために) ローカルが小さいサイズに変換されている可能性があります。これは、そのようなコードの実行が遅くなり、必要以上に多くのコード スペースが必要になることを意味します。」
参照してください: http://www.ti.com/lit/an/spma014/spma014.pdf
以下はコンパイラによって処理されますが、目前の問題に関連しています。
MSP430 は 16 ビットのマイクロプロセッサです。char はわずか 8 ビットであり、すべてのワードが整列されるようにパッキングする必要があります。たとえば、3 文字はメモリ内で適切に配置されません。代わりに、常にアラインされる 16 ビットの整数を使用してください。
16 の倍数 (16 と 32 など) の可変サイズを使用すると、メモリをより効率的に利用することもできます。メモリを整列させるためにパディングが行われることはありません。