(toppers-users 471) 16bit integer の場合

Tatsuhiko Matsukawa KFC00725 @ nifty.ne.jp
2002年 8月 13日 (火) 00:17:40 JST


お世話になります。

最初の投稿でも書きましたが、現在検討中のCPU
(Xstormy16)のintは16bitなのですが、以下の点が
気になりましたので、ご報告させていただきます。
特に問題がなければ、コメント不要です。

(その1)
time_event.hの58行目で、
#define TMAX_RELTIME ((1u << (sizeof(EVTTIM)*8-1))-1)
とありますが、intが16bitの場合、コンパイラでの定数式
評価でオーバーフローとなります。正しくは、
#define TMAX_RELTIME ((((EVTTIM)1) << (sizeof(EVTTIM)*8-1))-1)
とすべきと思われます。(H8S等では大丈夫でしょうか?)

(その2)
config.txtで、「intが16bitで64bit整数がサポートされない場合
_16BIT_INT_を指定」とあります。Xstormy16はint16bitですが
64bitも使えるので、_16BIT_INT_を指定していなかったのです
が、良く見ると、itron.hの78行目で
#define __int32 int
となっていました。
これを
#define _int32 long
としていただくと、intが16bitのCPUでも32bitのCPUでも
正しく_int32が32bitになり、かつD/UDが使えると思われ
ます。

以上、ご報告まで。

************************
松川竜彦
KFC00725 @ nifty.ne.jp
************************