第13回 da.exe Ver.0.0.117.0
いえ、
実は
アセンブラ作り以外にも
やることがありまして
思った以上に進まないorz
いっそのこと
これを卒業研究にして
開発時間稼ぎたいとも思ったんだけど
卒業研究は就職したい企業の業務内容に合わせたほうがいいって
友達に言われたので‥‥。
一応(これでも)PCソフト制作希望なんだけど、
COFFの知識なんてまず必要なさそうな分野だからなぁ(´・ω・`)
そろそろ飽きるかも。
プログラムの大半を書き直して
いずれコンパイラを作る時にコードの一部を移植することを見越して
行解析法を単純にニモニック名とオペランドに分ける手法から
トークン分割に変えてみたり。
あと、ファイル単位で行なうアセンブリ読み込み処理を
再帰化を見越した設計にしてみたり。
いろいろいじってた。
トークン分割処理はまだ書いてる途中だから
要するにアセンブルできなくなった(キリッ
拙いコードだけど
何かに使えそうな関数晒しとく。
戻り値が辞書順じゃないので場合によっては修正の必要あるかもしれない。
僕の場合はただ一致してるかしてないかだけで十分なので。
トークン分割の時に使ったので。
なんか一行コメントをあらわすセミコロンに
全角文字も使えるようにしようとして大変なことになったので。
というかこのへんに1時間もかけた。死にたい。
すでに標準ライブラリに入ってるよねさすがに‥‥
//
// 文字列の後方一致を判定
//
int strbcmp (char *text, char *key)
{
int i, n, len;
// 文字列長を取得
len = strlen (key);
n = strlen (text);
// 文字列長が条件に合っているか
if (n < len) return 1;
// 実際に調べる
for (i=0; i<len; i++)
if (text[n-i-1] != key[len-i-1])
return -1;
// 合格
return 0;
}