« 神の思し召し | メイン | 「べーべ」のおうち »

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

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)