« 神の思し召し | メイン | 「べーべ」のおうち »
2005年11月11日
時間にシビアなプログラム
久しぶりに、命令実行時間を1命令単位で数えないといけないぐらい、シビアなタイミングで動くプログラムを、C言語で書いた。生成されたアセンブルソースを見ると、けっこう頭が悪いことをやっているので、ところにより手動でアセンブラで書く。
マイコン用のC言語だったら、ビット操作をする演算子がないと、困るよなあ。
例えば、変数aの0ビット目の値を調べるのに、
if((a & 0x01) == 0){
とか書くと、ビット操作命令を使ってほしいのに、クソまじめに、aと0x01とのANDをとって、その結果が0かどうかをZフラグをみている。(少なくとも3命令)
なんでこういう演算子がないんだろう。
投稿者 akita : 2005年11月11日 17:17
トラックバック
このエントリーのトラックバックURL:
http://akita11.jp/mt/mt-tb.cgi/337
コメント
とてもビビっとくることをされているような、そんな予感がします。楽しみです!
投稿者 いしかわきょーすけ : 2005年11月12日 13:34
いやあ、ただシリアルで来るデータを、ボーレートを変換してたくさんに分岐しているだけです・・・
投稿者 あきた : 2005年11月12日 17:02
お手数おかけしました(^^;
どんなケーブル分岐になるか、お楽しみに☆(ぇ。
投稿者 あきこ : 2005年11月13日 02:53
いやいや、なかなか楽しいですよ。
投稿者 あきた : 2005年11月14日 07:59