問題タブ [low-level]
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.
assembly - なぜこれほど多くの異なる呼び出し規約があるのですか?
歴史的に、なぜそれはほぼすべての人と彼らの弟が彼ら自身の呼び出し規約を定義したように見えるのですか?あなたはC、C ++、Windows、Pascal、Fortran、Fastcall、そしておそらく私が言及しようとは思わなかった無数の他のものを持っています。大多数のユースケースでは、1つの規則が最も効率的であるべきではありませんか?どちらか一方を優先する正当な理由はありますか?
windows - 物理ブロックのレベルでディスク アクティビティを傍受する
これはフィルタードライバーを介して可能になるはずですが、正確に必要なタイプは何ですか?
optimization - OpenGLES2.0のセルオートマトンのテクスチャフォーマット
簡単なアドバイスが必要です。
GPUでセルオートマトン(雲のリアルなアニメーションのためのシンプルで効率的な方法から)をシミュレートしたいと思います。ただし、ビット単位の操作をサポートしないOpenGL ES 2.0シェーダー(WebGL内)に制限されています。
このセルオートマトンのすべてのセルはブール値を表すため、セルごとに1ビットを格納するのが理想的でした。では、このデータをOpenGLのテクスチャ形式で表現する最も効率的な方法は何でしょうか。トリックはありますか、それとも単純なRGBAテクスチャに固執する必要がありますか?
編集:これまでの私の考えは...
現時点では、プレーンなGL_RGBA8、GL_RGBA4、またはGL_RGB5_A1のいずれかを使用することを考えています。
おそらく、GL_RGBA8を選択し、浮動小数点演算を使用して元のビットを抽出しようとすることができます。たとえば
x*255.0
、おおよその整数値を示します。ただし、個々のビットを抽出するのは少し面倒です(つまり、2で除算して数回丸めます)。また、精度の問題にも注意しています。GL_RGBA4を選択すると、コンポーネントごとに1.0または0.0を格納できますが、GL_RGBA8を使用して以前と同じトリックを試すこともできます。この場合、それはだけ
x*15.0
です。ビットを抽出するための操作は少なくなりますが、読み取られるテクスチャごとの情報は少なくなるため、高速になるか表示されないかはわかりません。GL_RGB5_A1を使用して、アルファチャネルが1ビットセルの状態を格納するボクセルごとの色などの追加情報とともにセルをパックできるかどうかを試してみることができます。
optimization - x86 および +1 シフトの高速 memmove (Move-to-front 変換用)
高速な MTF ( http://en.wikipedia.org/wiki/Move-to-front_transform ) の場合、文字を配列内から配列の前に移動する高速バージョンが必要です。
cachegrind が示しているように、memmove では多くの分岐予測ミスが発生しています。
他のバージョンのコード (最初の例の memmove ではなく、これ)
多くのバイト読み取り/書き込み、条件付き分岐、分岐予測ミスがあります
i は、「適切な」入力に使用される MTF であるため、それほど大きくはありません。BWT (Burrows–Wheeler 変換) 後のテキスト ファイルです。
コンパイラはGCCです。
c++ - NULLをチェックするときに無視するビット数はいくつですか?
seg-Vで次のクラッシュが発生します。
これは、そうでi
はないがNULL
、それでも有効ではないためです。NULL
呼び出し元のコードがポインタから配列インデックス操作のアドレスを取得する場合にも、同じ問題が発生する可能性があります。
これに対する1つの解決策は、下位ビットをトリミングすることです。
しかし、いくつのビットを取り除く必要がありますか?
編集、とにかくその場合は中止するので(ただし、seg-vよりもクリーンに)、未定義の動作については心配していません。
FWIW:これは半仮想的な状況です。これを考えさせられたバグは、投稿する前に修正されましたが、以前に遭遇したことがあり、将来どのように処理するかを考えています。
議論のために想定できること:
- Setがseg-vになるもので呼び出された場合、それはバグです
- Setは、修正するのが私の仕事ではないコードによって呼び出される可能性があります。(たとえば、バグを報告します)
- Setは、修正しようとしているコードによって呼び出される可能性があります。(たとえば、デバッグ作業の一部として健全性チェックを追加しています。)
- Setが呼び出された場所に関する情報を提供しない方法で呼び出されます。(つまり、Get to seg-vを許可することは、何かをデバッグするための効果的な方法ではありません。)
- コードは移植可能である必要はなく、不正なポインターを100%キャッチする必要もありません。現在のシステムで十分な頻度で動作するだけで、どこで問題が発生しているのかを見つけることができます。
c# - C#での本当の低レベルのサウンド生成?
C#で任意の音波を作成してスピーカーから再生する賢明な方法を知っている人はいますか?
この問題は時々戻ってきて、何年もの間、私はいつも解決策を見つけることなく多くの失敗の後にそれをあきらめることになります。
私がやりたいのは、逆ビジュアライザーのようなものです。つまり、音から「数字」を生成するのではなく、数字から音を生成したいのです。
サンプルレート、サンプルサイズ、サウンドデータ(たとえば整数の配列)を提供する関数を取得すると、そこから適切なwavファイルが生成されます(リアルタイムのサウンド再生が理想的ですが、私はdこれにも満足している)。
私はwavファイルの仕様がインターウェブ全体にあることを知っており、上記の関数を作成するためにいくつかの試みを行い、低周波数である程度の成功を収めましたが、サンプルごとのビットなどをいじり始めると...それは巨大で制御できない混乱になります。
これはまだ行われていませんか?.NETマネージラッパーがあれば、それが何を使用するかは気になりません(そして、最新のVSからいつでもアクセスできます)。XNAは、この方法では低レベルのオーディオをサポートしていません。また、似たようなことを達成すると主張するいくつかの例を見つけましたが、それらはまったく機能しないか、まったく異なることをします。
ありがとうございました。
operating-system - ハードウェアディスプレイが表示モードを切り替えるプロセスを完了したかどうかを検出することは可能ですか?
私が尋ねる理由は、1920x1080x32bppから1280x800x32bppなどの表示モードを切り替えるのに約5秒かかる新しいLCDを購入したばかりだからです。ディスプレイがビデオ出力の準備ができているかどうかを検出するためのプログラムソリューションはありますか?
c# - Java と C# にビットシフト演算子があるのはなぜですか?
整数乗算(除算を一時的に忘れる)の違いはまだシフトを支持していますか?もしそうなら、違いはどれくらいですか?
ほとんどの場合、(C#/ Java)バイトコードコンパイラまたはjitがそれをキャッチするべきではない場合でも、それは単にそのような低レベルの最適化のように思えますか?
注: C# (gmcs Mono C# コンパイラ バージョン 2.6.7.0 を使用) のコンパイル済み出力をテストしましたが、乗算の例では、2 の倍数で乗算する場合でも、乗算にシフトを使用しませんでした。
C# http://csharp.pastebin.com/hcrRnPrb
cil http://csharp.pastebin.com/0js9F2c1
PS私はそれをバイトで使用するといくらか便利かもしれないことを忘れていましたが、数値で使用するにはまだ問題があります。
windows - Analyze .exe/.dll (Windows PE) files for code bloats
Let's say I have a project with a dozen of different modules which produce one resultant DLL, how can I analyze it so that I can identify the actual file size that each module/functions contribute? I know it might be impossible with a Release build where much information has been stripped, but how about if I have the full source and can do a Debug build?
Also, if there are big static variables defined somewhere, is there a way I can easily locate them?
Bonus question: How about Linux ELF files?