compiler-construction

    0

    2答えて

    私は16ビットのレジスタベースの仮想マシンを持っています。実際のx86マシンコードをコンパイルする手順は何ですか?コンパイルされたコードを別の実行可能ファイル/ DLLとリンクできる必要がある場合を除き、私はJITコンパイラを作成することを検討していません。 VMは、VMがプロジェクトに追加された場合、特別な言語構成を追加できるようになっています。 (例えば、それがゲームエンジンに埋め込まれている

    0

    1答えて

    この質問はgccの内部構造に焦点を当てています。私はgcc genericツリーを試しています。この小さなプロジェクトは、教育目的のためだけにハードコードされたフロントエンドをコンパイルすることです。私はprintfを外部から呼び出すことができ、テストメッセージを出力できる実行可能ファイルをコンパイルすることができました。後者は、私が関数の引数を用意することができるという証拠です。この問題の本質は

    0

    1答えて

    次の例では、メンバ関数に関して関数ポインタの呼び出しを理解することは本当に難しいです。私は、コードを知っていただきたいと思い (f.*(FPTR) bp)(0); // This call b() (b.*(BPTR) fp)(0); // This call f() は(私がobj.Fun(のような関数呼び出しを知っているようには)これらの二つの機能のために、コンパイラによって楽しい(&

    1

    1答えて

    私はSwiftコンパイラ(swiftc -dump-ast)によって生成されたASTダンプを解析するANTLR 4文法に取り組んでいます。 以下の例のSwiftプログラムとそれぞれのASTダンプを参照してください。 残念ながら、bug in the compilerのため、ダンプに不均衡なカッコが含まれることがあります(閉じ括弧がいくつかのツリーノードにありません)。次のようにtreeNodeルー

    0

    1答えて

    私のタスクはFIRSTを計算し、次の文法のためのセットに従うことです設定します。 P ::= S CS . S ::= (int , int) CS ::= C CS | epsilon C ::= left int | right int | low C I得た後の最初のセット:私は計算し、次のセットの場合 FIRST(S) = {'('} FIRST(C) = {left,righ

    0

    2答えて

    int i = 10, j = 5, k; k = f(++i) + g(++i) + j+ 25; f(++i)またはg(++i)が最初に計算されますか? どのようにプログラムを実行しないで知ることができますか? fと仮定すると、順序変更は、コンパイラに依存しない方法gは int f(int a) { return a; } に似ていますか?

    1

    1答えて

    私は私が構造化されていない文に検証することができますどのようにこの start if start if start end start else start if start if end if end if start end のように有効な構造化されている?(構文エラー、適切ならばすなわちスタートを終了していない) 任意の

    -1

    1答えて

    アセンブラとC++を使用して言語を書き込むための知識と知識があると仮定して、どのようにコンパイラをビルドしますか?より具体的には、コンパイルとリンクの側面についてもっと知りたいと思います。 Visual StudioのMicrosoftコンパイラは、その他のチェックがすべて完了した後、すぐにプログラム内のコードをすべてコンパイル、アセンブルおよび/またはリンクします。 私のC++プログラム内でアセ

    1

    1答えて

    私は現在、ハッピー&アレックスを使って、おもちゃの言語 のコンパイラのパーサを書いています。任意のレイアウトのオプションが必要なので、私は アレックスの状態をblock非端末に合わせる前に変更しなければなりません。残念ながら ハッピーに必要な先読みトークンが先に読み取られているようです 私はアレックスの状態を変更するチャンスがあります。ここで は、問題を実証する小さなスニペットです: funcDe

    1

    1答えて

    Django Webアプリケーションを構築して、信頼できないコードをユーザーが提出したさまざまな言語でコンパイルして実行します。コンパイル背後 手順は次のとおりです。 は、bashスクリプトを使用して 実行ファイル名を指定して、データベース内に実行されたアクション 店に提供エディタからコードを取ります。 直接、端末内のコードを実行しているのセキュリティの問題がありますので、私は解決策としてドッカー