問題タブ [compiler-construction]
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.
c - コンパイル時のスタック使用量のチェック
C でコンパイル時に関数が必要とするスタックサイズを知り、出力する方法はありますか? これが私が知りたいことです:
いくつかの関数を取りましょう:
この関数をコンパイルするときに、関数が呼び出されたときにどれだけのスタック スペースが消費されるかを知りたいです。これは、大きなバッファを隠している構造体のオン スタック宣言を検出するのに役立つ場合があります。
私はこのようなものを印刷するものを探しています:
ファイル foo.c : 関数 foo スタックの使用量はn
バイトです
それを知るために生成されたアセンブリを見ない方法はありますか? または、コンパイラに設定できる制限はありますか?
更新: 特定のプロセスのランタイム スタック オーバーフローを回避しようとしているわけではありません。コンパイラによって決定された関数スタックの使用がコンパイル プロセスの出力として利用可能かどうかを実行前に見つける方法を探しています。
別の言い方をすれば、関数にローカルなすべてのオブジェクトのサイズを知ることは可能ですか? 一部の変数は消えますが、上限は問題ないため、コンパイラの最適化は私の友人ではないと思います。
c# - 「現在のメソッドのコードが最適化されているため、式を評価できません」とはどういう意味ですか? 平均?
再帰を多く含むコードを書きましたが、完了するまでにかなりの時間がかかりました。実行を「一時停止」して何が起こっているかを確認すると、次のようになります。
現在のメソッドのコードが最適化されているため、式を評価できません。
それが何を意味するのか理解できたと思います。しかし、私が困惑しているのは、ステップを押した後、コードが「最適化」されておらず、変数を確認できることです。これはどのように起こりますか?最適化されたコードと最適化されていないコードの間でコードをどのように切り替えることができますか?
c# - C# の yield ステートメントを実装するためのアルゴリズム
私は自分でそれを理解したいと思っていますが、yieldステートメントを含む関数を列挙子のステートマシンに変換するアルゴリズムは何ですか? たとえば、C# では次のようになります。
これに:
もちろん、元のコードによって結果はまったく異なる可能性があります。
ruby - Ruby から Actionscript3 バイトコードへ
こんにちは、Ruby to actionscript 3 バイトコード コンパイラを調べていて、Red Sun というプロジェクトについての言及を見つけましたが、それに関する情報はほとんど見つかりません。
だから私の質問は... RubyソースをAS3バイトコードに変換するために利用できるツールは何ですか
compiler-construction - wxwidgets setup.h "そのようなファイルはありません"
この問題をGoogleで簡単に検索すると、それが一般的であることがわかります。私の場合、私の人生では解決策を見つけることができません。
wxWidgets Web サイトから Windows 用の wxWidgets 2.8.8 を直接インストールしました。
何かをコンパイルしようとすると (「wxWidgets の最初のプログラム」で説明されているサンプル アプリなど - http://zetcode.com/tutorials/wxwidgetstutorial/firstprograms/ )、次のようになります。
wx/setup.h: そのようなファイルまたはディレクトリはありません
C:\wxWidgets-2.8.8\include と C:\wxWidgets-2.8.8\include\wx の両方をコンパイラ検索リストに含めました。
シンプルであるべきですが、そうではありません! :(
wxWidgets (Code::Blocks など) と統合された IDE を使用しようとすると、同じことが起こります。
それで、助けてください... setup.hが見つからないのはなぜですか?
javascript - トレース ツリーによる Javascript のパフォーマンスの向上は、他のインタープリター言語にも適用されますか?
Mozilla は、TraceMonkeyを使用して JavaScript のパフォーマンスを向上させることに成功しているようです。Trace Trees に関するAndreas Gal の論文も参照してください。
これらの改善は他のインタープリター/コンパイラーでも利用できますか?もしそうなら、これは他のインタープリター言語で一連の改善が見られることを意味しますか?
.net - .NET ILコードをマシンコードにコンパイルすることは可能ですか?
.NETFrameworkなしで.NETプログラムを配布したいと思います。.NETプログラムをマシンコードにコンパイルすることは可能ですか?
c++ - リリース ビルドとデバッグ ビルド間で動作が異なる Float 値
アプリケーションをリリース モードとデバッグ モードでコンパイルすると、異なる浮動小数点値が生成されます。私が見つけた唯一の理由は、バイナリ トレース ログを保存したことと、リリース ビルドのログがデバッグ ビルドからわずかにずれていることです。32 ビット浮動小数点値の下位 2 ビットが約 1/2 異なるようです。ケースの。
この「違い」はバグだと思いますか、それともこの種の違いが予想されますか。これはコンパイラのバグですか、それとも内部ライブラリのバグですか。
例えば:
問題は X360 コンパイラに関するものです。
c# - インターフェイスを使用した暗黙の演算子
暗黙的な型キャストを実装しようとしているジェネリック クラスがあります。ほとんどの場合は機能しますが、インターフェースのキャストでは機能しません。さらに調査したところ、適用される「インターフェイスからのユーザー定義の変換」というコンパイラ エラーがあることがわかりました。場合によってはこれを強制する必要があることは理解していますが、私がやろうとしていることは正当なケースのように思えます。
次に例を示します。
それを使用するコード:
誰かが回避策を知っていますか、または私の場合は変換されておらず、Foo にのみ含まれているため、interfaceReferenceToBar
暗黙的にキャストできない理由を満足のいく方法で説明できますか?Foo<IBar>
編集: 共分散が救いを提供するようです。C# 4.0 仕様で、共分散を使用したインターフェイス型の暗黙的なキャストが許可されることを期待しましょう。
performance - VBScript をコンパイルした経験はありますか?
私は自作の 2000 行の VBScript スクリプトを持っていますが、コードを追加するたびに徐々に遅くなっていきます。これはプライベートなデバッグ支援として作成されたもので、今では非常に便利になっています。磨いて商品と一緒に発送したいです。
コンパイルしてEXEにすることで高速化できると思いました。さらに、コンパイル プラットフォームが提供する可能性のある追加のライブラリを使用すると、ツールのユーザー インターフェイスが必要になります。また、不足している機能が必要な場合は、 Win32関数を呼び出してスクリプトを拡張することも検討しています。
VB 6.0 を持っているか、外部コンパイラを購入できます。しかし、Windows Vista で正常に動作するには、作成したプログラム (コンパイラ自体ではない) も必要です。私の最良の選択肢は何ですか?