[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 3066] Re: bmpv04.



  こんにちは、川合です。


rakkyo さんは 2002/01/28 02:50:06 の「[OSASK 3062] Re: bmpv04.」
で書きました:

>なんとかエラーを発見することが出来ました。
>ありがとうございました。 >川合さん

  どういたしまして。問題個所が分かって良かったです。

>>  これはですね、カラーコード0〜15以外の色を指定しているためです。
>どうも
>AL >>= 4;
>というコードが
>SAR AL, 4
>というコードになるため
>BなどがALに入ってくると
>上位4ビットが、1になってしまうからのようです。

  なるほど、なるほど。

  それは、ASKAがALをsignedとして扱ったためです(ASKAでは明記され
ていないとコンパイラが勝手に決めていいことになっています)。これ
はunsignedなんだぞ!って教えてあげれば回避できます。ということで
、簡単な回避策を3つほど。

1.SHL(AL, 4);にする。ASKAらしくなく、可読性は落ちるが、まあ、
    最小の手間で目的を達成できる。

2.(unsigned char) AL >>= 4;にする。ASKAらしく、可読性はまあま
    あだが、やたらに長い。

3.unsigned char data == AL;などとやっておいて、data >>= 4;にす
    る。これはうまく使えばもっとも読みやすく、ASKAらしい。が、使
    いこなすためにはちょっとしたセンスが必要という難点もある。

>BMPVはもうすこしいじってから出します。

  楽しみに待ちます。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/