私は、Sony Cell SPU命令の入力ファイルを解析するための小さなプログラムを作成し、その命令のバイナリ形式のテキストを出力します。入力テキストの解析とファイルへの出力
基本的な考え方は以下です:
入力テキストフォーマットが命令であるRT/RA/RB
a r3,r2,r1
ah r6,r5,r4
出力テキストのフォーマットは:オペコード/ RB/RA/RT
00011000000000000100000100000011
00011001000000010000001010000110
基本的には、コマンド構文(a、ah、etc ...)を解析し、オペコードを決定しています。この情報は、私に命令のフォーマット(レジスタ形式)も与えます。一度私はアクセスされているレジスタを知って、私は7ビット値(r3 = 0000011など)にこれらの値を変換します。次に、32ビットの変換された命令を出力テキストに書き込みます。
ここで私は固執していますが、どのように命令構文の構文解析を行うかについてです。
特に、入力テキストファイルの各行をchar array
に読み込み、インデックスの下位ビットをチェックし、それを各命令の文字列と比較することでしたが、私はそうではありませんこれは良い方法だと思います。
このタイプの解析と比較を実行するには、どのような方法が適していますか? 、コマンドの数とその長さに応じて、
switch(array[0])
{
case 'a':
switch(array[1])
{
case ' ':
// end of command!
break;
case 'a':
// ...
break;
default:
// unknown command
break;
}
break;
case 'b':
// analogously
break;
default:
// unknown command
break;
}
:私は右のあなたを理解していれば