DISASSEMBLER(3X) — NEWS-OS Programmer’s Manual
名称
disassembler − MIPS 命令を逆アセンブルし、その結果を表示する
形式
int disassembler (iadr, regstyle, get_symname, get_regvalue, get_bytes, print_header)
unsignediadr;
intregstyle;
char∗(∗get_symname)();
int(∗get_regvalue)();
long(∗get_bytes)();
void(∗print_header)();
解説
disassembler は、MIPS マシン命令を逆アセンブルし、その結果を 標準出力 へ出力します。
iadr は、逆アセンブルする命令のアドレスです。 regstyle は、逆アセンブル時にどのようにレジスタを命名するかを指定します。 値が0の場合、コンパイラの名前が使用されます。 そうでない場合は、ハードウェア名が使用されます。
次の 4 つの引数は、関数のポインタです。 それらのほとんどは、呼び出し側に、逆アセンブルの表示におけるなんらかの 柔軟性を与えます。 必ず指定しなければならない 唯一の関数は、 get_bytes です。 他のすべての関数はオプションです。 get_bytes は引数なしで呼び出され、逆アセンブルするための次のバイトを返します。
get_symname には、アドレスが渡されます。 これは、 jal 命令のターゲットです。 NULL が返されるか、 get_symname が NULL の場合は、 disassembler はアドレスを表示します。 そうでない場合は、 get_symname から返されるように文字列名が表示されます。 get_regvalue が NULL でない場合、レジスタ番号が渡され、指定されたレジスタの現在の内容を返します。 disassembler は、命令の逆アセンブルとともにこの情報を表示します。 print_header が NULL でない場合、命令アドレス iadr および逆アセンブルする現在の命令が渡されます。 これは get_bytes からの返り値です。 print_header は、これらのパラメタを使用して実際の命令の逆アセンブルが表示される前に 任意の希望する情報を表示することができます。
get_bytes が NULL の場合、 disassembler は −1 を返し、errno は EINVAL に設定されます。 そうでない場合は、逆アセンブルされたバイト数が返されます。 逆アセンブルされたワードが飛越しまたは分岐命令である場合は、 遅延スロット中の命令も逆アセンブルされます。
プログラムは、オブジェクトファイルのアクセスルーチンライブラリ libmld.a とともにロードされなければなりません。
関連事項
NEWS-OSRelease 4.2.1R