【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++】 2次元配列の引数渡し(2011.08.03)
- 【C++】 VisualStudio 2010 でのsnprintf関数(2010.11.16)
- 【C/C++】 streamクラスのeofメンバ(2009.12.12)
- 【C/C++】 マクロと関数呼び出し(2009.08.07)
- 【C/C++】 演算子のオーバーロード(2009.04.27)
この記事へのコメントは終了しました。
« Becky!からMaildir(dovecot)への移行+WebMail | トップページ | 【C/C++】 標準出力への整形出力 »
コメント