問題タブ [symbol-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
776 参照

compiler-construction - コンパイラがシンボル テーブルのデフォルト値を処理する方法

一部のプログラミング言語では、関数呼び出しでパラメータにデフォルト値を設定したり、構造体の属性にデフォルト値を設定したりできます。Python や JavaScript のように、関数呼び出しでいくつかのパラメーターを省略すると、デフォルト値が関数で置き換えられます (構造体が属性にもデフォルトを持つことができるのと同じです)。では、コンパイラは実際にこれをどのように処理するのでしょうか? 特にシンボルテーブルで?デフォルト値を指すポインターにもう1つの属性を追加すると、実行時にデフォルト値がスタックにプッシュされると思いますか? 私が正しいかどうか教えてください。ありがとう。

更新: ここでのデフォルト値は、Python で言うと、次のプログラム パラメータbにはデフォルト値があります0

結果0とが得られ1ます。では、これは実行時またはコンパイル時にコンパイラによってどのように処理されるのでしょうか?

0 投票する
1 に答える
160 参照

string - 解析された文字列に基づく変数名

文字列で解析されたものに基づいて変数に名前を付けたいと思います。

例:string =='dog'で解析された場合:私の変数名はdogと等しく、その値は文字列'dog'である必要があります

0 投票する
0 に答える
76 参照

localization - LWUIT シンボル テーブル

シンボルテーブルの問題に直面しています。ローカリゼーションの助けを借りて、 LWUITアプリケーションでペルシア語と英語を使用しています。

今私の問題は、任意のモバイル デバイスの * ボタンを押すと、Symbol Table chars の一部がペルシャ文字に変換され、一部が同じままになることです。

この問題を解決するにはどうすればよいですか?

0 投票する
3 に答える
1500 参照

c++ - ベクトル c++ で大きなデータを保存する

ファイルに膨大なデータがあり、それを読み取って確率を計算する必要があるため、ファイル全体で各単語の出現回数を数え、さらに計算を行う必要があります。ファイルには 150 万件のレコードが含まれており、各レコードは約 6 文字列です。ベクターを使用してこのデータを保存しましたが、約 8000 レコードを保存した後にプログラムがクラッシュしました。このベクトルをプログラムのメモリではなくコンピューターに保存する方法はありますか?!. または、シンボル テーブルと呼ばれるものを検索で聞いたのですが、その意味や使用方法がわかりませんでした。

この問題の解決策はありますか?

これはメインファイルです

Tuple.h

および VerbPair.h

0 投票する
2 に答える
1735 参照

java - .class ファイルのシンボル テーブルへのアクセス

Java の任意のコード ベースについて、記号と型の間の USES および USED-BY 関係の表を (概念的に) 作成したいと考えています。シンボル テーブルには、必要な情報が含まれています。しかし、フロント エンドを作成することは巨大な作業のように思われ、私のプロジェクトをさらに大きなサブ プロジェクトに変えてしまう恐れがあります。これには理由はありません。バイトコードの場合、Java .class ファイルには、型と参照を解決できるように、クラスごとにそのようなシンボル テーブルが必ず含まれているように思えます。

私の質問は -

一連の .class ファイル内のシンボル テーブルにプログラムでアクセスして、必要な USES / USED-BY テーブルを作成するにはどうすればよいですか? 誰かがすでにこれを行っていますか(確かに答えはイエスです)、これを行うためのツールはまだライブラリではありませんか?

0 投票する
4 に答える
2748 参照

java - Javaメソッドの内部識別とは?

ご存知のように、Java では、メソッド名だけでは異なるメソッドを区別するのに十分ではありません。

メソッドを区別するには、次の情報が必要だと思います(間違っている可能性があります)。

さらに遠く、

  • 内部でより効率的にメソッドを識別する方法は?
  • 「メソッドID」について聞いたことがあります。上記のトリプルと整数の間にマッピングがあるため、JVM は解析後にメソッド ID のみを使用するということですか?
  • もしそうなら、それはシンボルテーブルに常駐していますか?

ありがとう!

0 投票する
1 に答える
1671 参照

f# - シンボルテーブルを使用してインタープリターを実装できますか?

シンボル テーブルを使用すると、プログラミング言語でのシンボルの検索が最適化されるという話をよく耳にします。現在、私の言語はコンパイラとしてではなく、インタプリタとしてのみ実装されています。コンパイラを構築する時間をまだ割り当てたくないので、インタプリタを最適化しようとしています。この言語は、ほとんどの場合、Scheme のセマンティクスと構文に基づいており、静的スコープです。私は実行時にコードを実行するために AST を使用します (私のインタープリターでは、Write Yourself a Scheme in 48 Hours.

残念ながら、F# マップを使用してシンボルを名前で格納および検索しているため、インタープリターでのシンボル検索が遅くなります。(実際には Trie を使用していますが、パフォーマンスも同様に問題があります)。代わりにシンボル ツリーを使用して、より高速なシンボル ルックアップを実現したいと考えています。ただし、インタープリターでシンボルテーブルを実装できるかどうか、またはどのように実装できるかはわかりません。それらについては、コンパイラのコンテキストでのみ耳にします。

これは可能ですか?実装戦略やパフォーマンスがコンパイラのシンボル テーブルと異なる場合、その違いを説明していただけますか? 最後に、私が調べているインタープリターにシンボル ツリーの既存の参照実装はありますか?

ありがとうございました!

0 投票する
3 に答える
22432 参照

gdb - gdbコアファイルのシンボルテーブルがロードされていません

私のアプリケーションの顧客側で生成されたコアダンプがあり、バックトレースを見ている間、シンボルがロードされていません...

ここで言及したいのは、使用されているアプリケーションが-gオプションを使用してビルドされていることです。

私には、必要なライブラリがロードされていないようです。「symbol-file」を使用してライブラリを手動でロードしようとしましたが、これは役に立ちません。

考えられる問題は何ですか?

0 投票する
3 に答える
27371 参照

c - エクスポートされたカーネルモジュール関数を別のモジュールから呼び出す方法は?

デバイスドライバーにさまざまな機能を提供するカーネルモジュールとしてAPIを作成しています。mycode.cに3つの関数を書きました。次に、モジュールをビルドしてロードし、mycode.h<kernel> / include/linuxにコピーしました。デバイスドライバーには、#include <linux / mycode.h>があり、これら3つの関数を呼び出します。しかし、ドライバーモジュールをビルドすると、これらの関数が未定義であるという3つのリンカー警告が表示されます。

ノート:

  • 関数はmycode.hでexternとして宣言されています
  • 関数は、mycode.cのEXPORT_SYMBOL(func_name)を使用してエクスポートされます。
  • コマンドnmmycode.koを実行すると、3つの関数すべてがシンボルテーブルで使用可能であることが示されます(それらの横にある大文字のTは、シンボルがテキスト(コード)セクションにあることを意味します)
  • モジュールをロードした後、コマンドgrep func_name / proc / kallsymsは、3つの関数すべてがロードされていることを示します。

したがって、明らかに関数は正しくエクスポートされており、カーネルはそれらが何でどこにあるかを認識しています。では、なぜドライバーはそれらの定義を見ることができないのでしょうか?私が何を見逃しているのか分かりますか?


編集:私はこれに関するいくつかの情報をここで見つけました: http ://www.kernel.org/doc/Documentation/kbuild/modules.txt

外部モジュールが別の外部モジュールからエクスポートされたシンボルを使用する場合があります。kbuildは、未定義のシンボルに関する警告を吐き出さないように、すべてのシンボルについて完全な知識を持っている必要があります。この状況には3つの解決策があります。

注:トップレベルのkbuildファイルを使用する方法をお勧めしますが、特定の状況では実用的でない場合があります。

トップレベルのkbuildファイルを使用するfoo.koとbar.koの2つのモジュールがあり、foo.koがbar.koのシンボルを必要とする場合は、共通のトップレベルのkbuildファイルを使用して、両方のモジュールが同じようにコンパイルされるようにすることができます。建てる。次のディレクトリレイアウトを検討してください。

最上位のkbuildファイルは次のようになります。

そして実行

次に、期待どおりに実行し、いずれかのモジュールのシンボルに関する完全な知識を使用して両方のモジュールをコンパイルします。

追加のModule.symversファイルを使用する外部モジュールがビルドされると、カーネルで定義されていないすべてのエクスポートされたシンボルを含むModule.symversファイルが生成されます。bar.koからシンボルにアクセスするには、bar.koのコンパイルからmodule.symversファイルをfoo.koがビルドされているディレクトリにコピーします。モジュールのビルド中に、kbuildは外部モジュールのディレクトリにあるModule.symversファイルを読み取り、ビルドが完了すると、カーネルの一部ではなく、定義されたすべてのシンボルの合計を含む新しいModule.symversファイルが作成されます。

「make」変数KBUILD_EXTRA_SYMBOLSを使用する別のモジュールからModule.symversをコピーすることが実際的でない場合は、スペースで区切られたファイルのリストをビルドファイルのKBUILD_EXTRA_SYMBOLSに割り当てることができます。これらのファイルは、シンボルテーブルの初期化中にmodpostによってロードされます。

しかし、これら3つのソリューションすべてで、ドライバーが私のAPIを使用するには、新しいMakefileを作成するか、Module.symversファイルに直接アクセスする必要がありますか?それは少し不便に思えます。私は、彼らが私のヘッダーファイルを#includeして、うまくいくことを望んでいました。他に選択肢はありませんか?

0 投票する
0 に答える
1272 参照

eclipse - elf ファイルにデバッグ情報が含まれていると、Eclipse で「シンボル テーブルがロードされていません」というメッセージが表示される

私は STM32 プロセッサに取り組んでいます。readelf -w を使用すると、elf ファイルから大量のデバッグ情報を抽出できました。出力の短い部分を以下に示します。

dwarfdump は、デバッグ情報が elf ファイルで利用可能であることも確認します。

次のソフトウェア パッケージを使用しています: Eclipse Juno arm-2011.03/bin/arm-none-eabi-gdb OpenOCD および JTAG キー

elf ファイルを生成したら、それを STM32 プロセッサに焼き付け、Eclipse でデバッグ セッションを開始します。JTAG は起動と停止ができたので、OpenOCD デーモンで問題ないと思います。「シンボルテーブルがロードされていません」という事実のため、ブレークポイントを設定できません。私が気付いたのは、「変数/ブレークポイント/レジスタ/モジュール」ウィンドウの中で、ロードされたelfファイルを示すモジュールタブに次の詳細が含まれていることです: タイプ: 実行可能シンボル: ロードされていないシンボルファイル: BuildResult.elf

デバッグ構成->スタートアップタブで、「イメージの読み込み/シンボルの読み込み」をチェック/チェック解除しても違いはありません。eclipse が elf ファイルに含まれるシンボル情報をどのようにデバッグ プロセスにロードするのか疑問に思っています。

提案、ヒントは大歓迎です。