« Becky!からMaildir(dovecot)への移行+WebMail | トップページ | 【C/C++】 標準出力への整形出力 »

【C/C++】 basic_stringクラス

ちょっと仕事でとある組み込み用プロセッサのアセンブラを作ってみようと思っとります。アセンブラに必要な機能として

プリプロセス(トリミング、マクロ展開)
パーシング
ラベル処理
ニモーニック→マシン語への変換

ってな位は必要になるわけです。ここで難しいのがパーシング(構文解析)で、C言語のような高級言語のコンパイラだったらyaccとかbisonとかパーサ出力してくれるコンパイラコンパイラで処理するのだけど、アセンブラ位でそこまでするのも何だかなぁ。しかも今回対象としているアセンブラはマイクロコード用のアセンブラで文法が特殊な構造してるから、ちょいっと独自に作ってみるかと思うわけです。

で、そうなるとどうやって作るかという事ですが、アセンブラは文字列処理を行うわけやし、ラベルの処理とかもあってデータ数が可変になる。あとPCで動作させるという事であればメモリや処理速度には余裕がありそうやね。文字列処理には向いていないけど、C++を使う事にするとSTLを使わない理由はない。Boost C++も使いたいけど標準でない事と環境のセットアップが面倒なんで、C++/STLで実装する事にしました。

そこで使う事になるテンプレートクラスは

string (厳密にはSTLではないけど)
vector (テキストファイルのバッファリング)
map (ラベル処理)

ってな感じかな。マシン語への変換はデザインパターンから Chain of Responsibility パターンを使うと楽そうですな。

話が大分脱線したけど、今回は復習ついでにstringクラスのメンバと使い方を調べてみようかと。
前にSTL使ったのって、もうかれこれ数年前です〜っかり忘れてるんだなぁ。この所組み込みばっかりやったし...

basic_stringクラスの主要メンバ関数

append   文字列の追加
assign     文字列の代入
insert      文字列の挿入
replace   文字列の置換
substr     文字列の一部抽出
at           特定文字への参照ポインタ
begin      文字列の先頭iterator取得
end        文字列の末尾+1 iterator取得
compare 文字列の比較
copy      文字列のコピー
empty    文字列の空チェック
erase     文字列の削除
find        指定文字列の検索
length     文字列の長さ

とりあえずstringクラスだけ。

« Becky!からMaildir(dovecot)への移行+WebMail | トップページ | 【C/C++】 標準出力への整形出力 »

C/C++」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 【C/C++】 basic_stringクラス:

« Becky!からMaildir(dovecot)への移行+WebMail | トップページ | 【C/C++】 標準出力への整形出力 »