0

最終的に完全なアセンブラーを作成するために使用できるハッシュ テーブルを作成する必要があります。

基本的には次のようなものになります: foo 100,

foo をハッシュしてから 100 (コマンドのアドレス) を格納する必要があります。2次元配列を使用する必要があると考えていました。配列の 2 番目の次元は、アドレス (int のみ) を記録するとき、またはアドレスを返すときにのみアクセスされます。2 番目の次元では検索は行われません。

このようにハッシュ テーブルを実装すると、非効率になりますか? それが非常に非効率的である場合、テーブルを実装するためのより良い方法は何ですか?

編集:まだコードを書いていません。実際、私はまだどの言語を使用するかさえ知りません。Cで書きたいのでかなり大変ですが、時間に余裕があればJavaで書くかもしれません。

4

2 に答える 2

0

コードを見ることができなければ、これが非効率になる理由はありません。可能性のある唯一の理由は、最終的に使用しなかった大量のメモリを事前に割り当てた場合ですが、念頭に置いていたアルゴリズムを見なければ、それを判断することは不可能です.

于 2013-01-22T04:26:55.417 に答える
0

配列内の他のすべての int が未使用である場合、メモリの浪費に加えて、キャッシュ ラインが十分に使用されないため、キャッシュの使用が不十分になります。

しかし、通常、アセンブラを書くときは、グラフィックスや重い計算のように非常にパフォーマンスが要求されるものではないため、そのようなことについて心配することはありません。少なくとも、早すぎる最適化を急ぐつもりはありません。

ただし、(たとえば、コンパイラによって C/C++ コードから) 自動的に生成された大きなコード (アセンブリの約 100,000 行) のアセンブルを開始すると、パフォーマンスがますます重要になることに注意することが重要です。ユーザー エクスペリエンス (待ち時間) が低下します。その時点で、最適化の候補は多数あります。I/O、解析、シンボル検索、短いジャンプと長いジャンプに複数のエンコーディングを使用できる場合は、可能な限り短いジャンプ命令の生成です。式とマクロも貢献します。最初に、入力アセンブリ コード内の空白とコメントを最小限に抑えることを検討することもできます。

于 2013-01-22T05:01:33.797 に答える