2009年3月 4日

字句解析というか構文解析というか。

先日mixiに書いたのと同じネタ、の続き。

「C言語で記述されたソースを読み込んで、条件に合う行を抜き出す」必要ができたので
PHP使って(別にPHPじゃなくてもいいんだけど、exeファイルで実行できる方法がわかったので使ってます。)
ソースファイルを読み込ませて、1行毎に正規表現でマッチする行を探すスクリプトを作りました。

それ自体はほんの数行でできたんですけど、どうしても解決できない問題が。。。
*(掛け算)なのか、ポインタの代入、宣言なのかわからんのです。
そもそも、単純に行毎に条件とマッチするかを判定しているだけなので、当然といえば当然なのですが。

うむー、片手間で作るツールとしては限界かなあ。
ちゃんとやろうと思ったら、コンパイラみたいなとこまでいかないとだめかねぇ・・

2008年5月25日

頭から計算が離れない

・・・最近、帰宅が遅くて憂鬱ですΣ(-_- ;))
幸い”まだ”休出してませんけれども・・・時間の問題か。

デバッグとか単体テストとか、延々とやってるせいか
たまに激しく混乱したりして・・・
明日からまたその作業に戻るのかー、と思うと微妙。

((=д=;)はぁ…前の職場はその点だいぶ気楽だったなあ。)

2007年10月25日

?:とif,elseでは何が違うのか?

by 後輩

 ・・すみません。私にはメリット・デメリットの良い回答ができませんでした・・orz

書籍によっては、推奨していなかったりしますね。(私の持ってるCの本では)
「?:を使うくらいなら、if,elseを使いましょう」みたいな。

んー、どうなんでしょうね?自分としてはコードがすっきりするかな、程度なんだけど。
他にもの凄いメリットとか、デメリットがあったりするのかなあ?

2007年10月23日

ビットフィールドアクセスの共通化

汎用ポートのアクセスに、ビットフィールドを利用していたんだけど
ポートの番号とビットの番号(意味わかるかなあ?)を指定して
目的のデータビットにアクセスする処理を作ることになって。

(個人的には(せっかく?)定義されてるビットフィールドを
 無駄にする気がしてしかたがないのだけれど。)



ーー(省略)ーー
struct st_p1 {
  union {
  unsigned char BYTE;
struct {
  unsigned char B7:1;
unsigned char B6:1;
unsigned char B5:1;
unsigned char B4:1;
unsigned char B3:1;
unsigned char B2:1;
unsigned char B1:1;
unsigned char B0:1;
} BIT;
}DR;
}
ーー(省略)ーー
#define P1(*(volatile struct st_p1 *)ポートのアドレス);
#define P2(*(volatile struct st_p2 *)ポートのアドレス);
#define P3(*(volatile struct st_p3 *)ポートのアドレス);

ーー(省略)ーー


↑みたいな構造体を使ってアクセスしてたのを、
ポート番号、ビット番号を指定して共通の関数で
アクセスするように変更するんだけど・・・

P1.DR.BIT.B1= ON、をSetPort(PORT1,BIT1,ON);こんな感じ?

続きを読む "ビットフィールドアクセスの共通化"