stacktool.htm
2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<B>stacktool(1P) <BR>
</B>
<P>
<B>関数名<BR>
</B>
<P>
stacktool
<P>
→ NINTENDO64開発システムのためのスタティックスタック分析ツール
<BR>
<P>
<B>構文</B>
<P>
stacktool [-s segname] [-f resfile] [-r] filename
<BR>
<P>
<B>説明<BR>
</B>
<P>
<B>stacktool</B>は、実行可能ファイルのターゲットに対し、スタック処理を分析するユーティリティです。そのファイルは、ファイル名(即ち、バイナリファイル)で指定されます。それは、各々周知の関数のスタック処理、およびバイトに換算した派生関数をリストアップします。しかしながら、すべての関数がこのステージにおいて完全に分析されるというわけではありません。
<BR>
<P>
関数あるいはその派生関数の中に回帰的なコールがある場合、*マークを終了に付加します。未知の
jalターゲットがある場合、@マークを付加します。未知のjalrターゲットがある場合、#マークを追加します。
<BR>
<P>
ターゲットファイルが<A HREF="makerom.htm" >makerom</A>によって生成され、テキストセグメントがただひとつだけなら、オプション[-s
segname]は、明確に指定する必要はありません。
<P>
-r オプションは、stacktoolにスタック処理に加えて親子関係をリストアップするように伝えます。
<P>
-f オプションは、親子関係に関しての外部情報をユーザーに供給します。例えば、プログラムが関数へのポインターを使用するなら、コンパイラは、ポインターを従う時のjalrを生成します。
<BR>
<P>
レゾリューションファイル中のステートメントの文法は:
<type> <parent> <children>であり、<type>が、未知のjalに対するマーク、あるいは未知のjalrに対する#マークのどちらであるか、<parent>が、質問中の関数名である、<children>が、その関数の未知の子の関数名リストである。サンプルのレゾリューションファイルは、OS中のいくつかのjalr問題を解決するために分割して供給されます。
<BR>
<P>
コマンドラインオプションは以下の通りです。
<P>
<B>-s segname</B>
<P>
テキストセグメント名、がsegnameによって指定されます。<A HREF="makerom.htm" >makerom</A>によって実行可能にするために、それは.codesegmentのようなものにします。デフォルトはコードを含む最初のテキストセグメント名です。
<P>
<B>-f resfile</B>
<P>
レゾリューションファイル名はresfileによって指定される。OSでresovlingな未知のjalrのためのサンプルレゾリューションファイルが分割して供給されます。
<P>
<B>-r</B>
<P>
字下げによっての親子関係を表示する。<BR>
<P>
<B>注意<BR>
</B>
<P>
このツールは、静的スタック処理を解析するためだけに最適に出来ています。従ってターゲットがたくさんの再帰呼出しを含む場合や、ターゲットが関数へポインターを使用するか、あるいは共有のオプションと一緒にリンクする場合、
<B>stacktool</B>は、あまり解析の役には立たないかもしれません。スレッドスタックサイズの決定において、MIPSコンパイラーの呼び出し規定と一致する関数によって、ひとつは報告されたサイズに16を加えるべきです。
<BR>
<P>
<B>参照</B>
<P>
<A HREF="makerom.htm" >makerom</A> (1)<BR>
</BODY>
</HTML>