問題タブ [intermediate-language]

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 投票する
3 に答える
365 参照

.net - ilアセンブラのvs2008構文の強調表示

Visual Studio 2008に中間言語の優れた構文強調表示を実行させる方法はありますか?

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

compiler-construction - 複合命令とは何ですか?

中間コードの章でクラスコンパイラの設計をしています。ネットで調べていたら、こんな一文を見つけました。

ソースプログラムに複合命令を含めることができる場合は、再帰的な解釈が必要です。

Googleで複合命令が何であるかを見つけることができません。

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

c# - MSIL コードへの C# コンパイル

Microsoft C# コンパイラ (CSC.exe) には、中間言語ファイルを出力するオプションがありますか? -S スイッチがGCCで行うようなものですか?

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

c# - C#でメソッドを動的に呼び出すためのオプション

このようなメソッドを呼び出す方法に関連する質問をたくさん見てきました。私が見つけていないのは、リフレクションまたはcsharpの他の手段を介してメソッドを呼び出す方法のさまざまなオプションのリストです。

誰かがcsharpでメソッドを動的に呼び出すさまざまな方法を詳細に説明できますか?反射からILの放出、およびその間のその他の方法まで。リソースの面で最も高価なものから最も安価なものまで、さまざまな方法をすべて知りたいと思います。

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

.net - .NET用のILコンパイラ?

これはばかげた質問かもしれませんが、ILモードのReflectorによって示されるものと同様のILコード用のコンパイラはありますか?

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

c# - 参照を保存しない場合の.maxstackが大きくなりますか?

私はいかなる種類のILマスターでもありません。私が書いたコードをコンパイラーがどのように作成するかを確認するために、時々それを使用します。私が疑問に思っていることの1つは、なぜ.maxstackそれが時々得る価値を得るのかということです。次のクラスについて考えてみます。

次に、私はこのようなプログラムを持っています:

上記のコードは、次のIL(リリースコンパイル済み)を提供します。

ここで、プログラムコードを次のように変更すると、次のようになります。

...次のILコードになります。

2番目のILコードは短く、予想どおりでした。しかし、私が少し不思議に思うのは、なぜ.maxstack私は2番目のコードサンプルでは8であるのに、最初のコードサンプルでは1であるのかということです。2番目のコードが、システムが操作のためにより大きなスタックを予約することにつながるのはなぜですか?

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

.net - 変数比較

次の C# スニペット:

この MSIL を生成します。

なぜ2つのceq呼び出しがあるのですか?

ありがとう

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

c# - ildasmおよび動的exeファイル

ILのプロパティを変更して、わずかに異なる実行可能ファイルを作成できるアプリケーションを作成しようとしています。たとえば、クライアントAはアプリを実行し、WinFormラベルのラベルは「クライアントA:」と表示されます。クライアントBがアプリを実行し、ラベルは「クライアントB」と言います。簡単私は設定ファイルまたはリソースファイルを使用することを知っていますが、それはこのプロジェクトのオプションではありません。メインプログラムは、ユーザーが入力したいくつかのフォームフィールドに基づいて動的に.exeファイルを生成できる必要があります。

私の解決策は、動的にするために必要なすべての要素を含むスタンドアロンの実行可能ファイルを作成することでした。次に、ildasmを使用してILを生成し、このILを使用して、動的にしたい要素の代わりにタグを使用できると考えました。ユーザーが正規表現などを使用してフォームに入力した後、実行時にこれらのタグを置き換えることができます。問題は、ILDASMによって生成されたILファイルをexeとして保存し、実行しようとした場合です。コンソールを起動するだけで何もしません。

私はこれを間違った方法で行っていますか?動的な.exeは非常に単純なものであり、ildasmを使用したILのリバースエンジニアリングが最も迅速な方法であるため、Reflectionについて詳しく調べたくありませんでした。

あなたの考えとポインタは大歓迎です。トニー

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

c# - Mono.Cecilは、AppDomainにすでにロードされているコードを変更できますか?

実行時に特定のクラスに動作を追加したいと思います。Reflection.Emitを使用して実行時にサブクラス化する方法を知っていますが、それだけでは不十分です。一部の外部構成によっては、タイプTのメソッドにオペコードを挿入して、それを継承するすべてのクラスが自動的にこの動作を取得するようにする必要があります。(.NETプロファイリングAPIを使用できません)。

このようなことはMono.Cecilで行うことができますか?

ロードされたアセンブリのコードを変更できない場合は、アセンブリをロードする前に変更を加えてから、変更したアセンブリをメモリにロードできれば問題ありませんが、アセンブリのロードを制御する方法がわかりません。

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

c# - 実際のキャストはCLRレベルでどのように機能しますか?

アップキャストまたはダウンキャストを行うとき、舞台裏で実際に何が起こりますか?私は次のように何かをするときの考えを持っていました:

最後の行のキャストは、目的がコンパイラーに安全であることを伝えるためだけのものであり、何も悪いことはしていません。そのため、実際にはキャストコードはコード自体に埋め込まれないという考えがありました。私は間違っていたようです:

なぜCLRは次のようなものが必要なのcastclass stringですか?

ダウンキャストには2つの可能な実装があります。

  1. が必要ですcastclass something。を実行するコード行に到達するとcastclass、CLRはキャストを作成しようとします。しかし、キャストクラスの文字列行を省略してコードを実行しようとするとどうなるでしょうか。
  2. は必要ありませんcastclass。すべての参照型は同様の内部構造を持っているため、Formインスタンスで文字列を使用しようとすると、誤った使用法の例外がスローされます(Formが文字列またはそのサブタイプではないことを検出するため)。

また、一言で言えば、C#4.0の次の統計は正しいですか?

それは本当に新しい参照を作成しますか?同じ参照であり、異なるタイプの変数にのみ格納されると思いました。

ありがとう