問題タブ [language-implementation]
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#のCポインター
これはC#での関数宣言ですか?
Cのこれと同じ:
つまり、C#では、呼び出された関数はバックグラウンドでポインターを受け取りますか?
.net - .Net 用の Common Lisp 実装はありますか?
.Net 用の Common Lisp 実装はありますか?
language-agnostic - ガベージ コレクションとランタイム タイプの情報
fixnum の質問は、私が長い間疑問に思っていた別の質問を思い起こさせました。
ガベージ コレクションに関するオンライン資料の多くは、実行時の型情報を実装する方法について説明していません。したがって、私はあらゆる種類のガベージ コレクターについて多くのことを知っていますが、それらを実装する方法についてはあまり知りません。
fixnum ソリューションは実際には非常に優れており、どの値がポインターであり、どの値がポインターでないかが非常に明確です。型情報を格納するために一般的に使用される他のソリューションは何ですか?
また、 fixnum についても疑問に思います。それは、すべての配列インデックスで fixnums に制限されているということではありませんか? または、完全な 64 ビット整数を取得するための回避策はありますか?
python - Python での予期しないリスト内包表記の動作
ネストされたスコープ規則とリスト内包表記の組み合わせに悩まされていると思います。 Jeremy Hylton のブログ投稿は原因について示唆に富んでいますが、CPython の実装を十分に理解していないため、これを回避する方法を理解することができません。
これは(複雑すぎる?)例です。人々がそれをデモする簡単なものを持っているなら、私はそれを聞きたい. 問題: next() を使用したリスト内包表記は、最後の反復の結果で埋められます。
編集:問題:
これで正確に何が起こっているのですか?どうすれば修正できますか? 標準の for ループを使用する必要がありますか? 明らかに、関数は正しい回数実行されていますが、リスト内包表記は各ループの結果ではなく、最終的な値で終わります。
いくつかの仮説:
- 発電機?
- リスト内包表記の遅延充填?
コード
出力
c++ - C++ の chars の整数値の範囲
私はThe C++ Programming Languageを読んでいますが、その中で Stroustrup は、実装に応じて、char の int 値が 0 から 255 または -127 から 127 の範囲になる可能性があると述べています。これは正しいです?-128 から 127 の範囲である必要があるようです。そうでない場合、なぜ 2 番目の実装の可能性で 256 ではなく 255 の値しか使用できないのでしょうか。
x86 - プロセス メモリ内の Unicode 文字列
Unicode 文字列が処理されるときに、メモリ内で最も優先される Unicode 文字列の形式は何ですか? なぜ?
実行可能ファイル イメージを作成してプログラミング言語を実装しています。明らかに、実用的なプログラミング言語の実装には、文字列を処理するためのプロトコルが必要です。
動的配列は実装が非常に簡単で、短い文字列に対して非常に効率的であるため、動的配列を文字列の基礎として使用することを考えました。この方法で文字列を使用する場合、文字の最適な形式についてはわかりません。
x86 - smalltalk オブジェクトとの動的リンク
私の smalltalk 方言に動的リンクを実装することを計画しています。問題は、動的リンクでメッセージ パッシングを機能させることです。
メッセージの受け渡し自体は次のように単純です。セレクターを含むメッセージがオブジェクトに送信され、オブジェクトはそのプロトコルからセレクターに一致するメソッドを取得し、メッセージにバンドルされたデータを処理して結果を返します。
画像ベースの実装では、非常に簡単な方法でメッセージ パッシングを実装できます。メッセージ セレクターは、グローバル シンボル テーブルから変換された単なる整数にすることができ、プロトコルは、整数とアドレスを含むハッシュ テーブルにすることができます。そのグローバル シンボル テーブルを使用して、すべてが 1 つの大きなイメージにコンパイルされていると仮定します。
動的リンクでは、シンボル テーブルが正しいセレクターを指していると想定することはできません。文字列をセレクターとして使用することで問題を回避できますが、言語が遅くなる運命にあります。
1 つの方法があり、プロトコルとセレクターのテーブルをコピーして、プロセスがそれらを適切に再配置する必要があります。しかし、それはかなりの労力のように聞こえます。
この問題を解決するためのより良い方法はありますか? また、動的リンクはそれだけの価値がありますか? セレクターとプロトコルの再配置を実装するにはどうすればよいですか?
linux - 書き込み保護された仮想ページ、キャッチ書き込み
書き込み保護されたページへの書き込みをキャッチする方法はありますか?
オブジェクトをコピーしてインスタンス化する自己のようなオブジェクトシステムを計画しています。(他のオブジェクトに比べてシンプルでコンパクトに聞こえるため) 明らかに、この目的のために作成されたオブジェクトは何らかの方法で書き込み保護されている必要があります。ELF のプログラム ヘッダーから書き込み保護されているものにフラグを付ける方法があることを確認しました。(RE、RWE、RW フラグ)
これは書き込み保護を提供しますか? セグメンテーション違反が発生するはずだと覚えていますが、これは本当ですか? 書き込み保護されたページへの書き込みをキャッチする方法。これは私が望んでいるものを実装する良い方法ですか?もっと良い方法はありますか?
c++ - C++ 例外処理ランタイムはどのように実装されていますか?
C++ の例外処理メカニズムがどのように機能するかに興味があります。具体的には、例外オブジェクトはどこに保存され、キャッチされるまで複数のスコープをどのように伝播するのでしょうか? それはいくつかのグローバル領域に保存されていますか?
これはコンパイラ固有のものである可能性があるため、g ++コンパイラスイートのコンテキストで誰かがこれを説明できますか?