問題タブ [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.
low-level - CPUエミュレーションと特定のクロック速度へのロック
私の他の質問を読んだことがあれば、私が今週末、プログラミング演習として6502CPUエミュレーターを組み立てるのに費やしたことをご存知でしょう。
CPUエミュレーターはほぼ完成しており、限られたテストからはかなり正確に見えますが、非常に高速に実行されているため、マシンの実際のクロック速度まで抑制したいと思います。
私の現在のテストループはこれです:
お分かりのように、各オペコードは完了するまでに特定の時間がかかるため、CPUサイクルクロックをカウントダウンするまで次の命令を実行しません。これにより、オペコード間の適切なタイミングが提供されます。これにより、すべてが高速になります。
目標のCPU速度は1.79mhzですが、複雑さを加えても速度を1.79mhzに維持するために、クロックの問題を解決したいので、調整する必要はありません。
何か案は?
c - ガロア体演算で y = x*x を最適化する
GF(8) で乗算を行うこの C コードがあります。
それは多かれ少なかれ教科書の実装です。
a が常に b であると断言できる場合、上記のアルゴリズムに巧妙な最適化があるのではないかと思います。たとえば、乗算の代わりに 2 乗を行います。私はところで暗号化を使用した後ではありません。GF(8) の x*x が x のビットをゼロ ビットで 1 つずつインターリーブするという事実を利用したいだけです。
ビットインターリーブを行うための非常に巧妙な方法がすでにありますが、GF(8) の x*x がビットインターリーブを行うことを (偶然に) 知ったので、ビットインターリーブにそれを使用しようとするのを止めることはできません。最適化。
何か案は?
c - GCCには固定サイズの整数がありますか?
MSVC++ コンパイラでは、特定のサイズの整数に対して__int8
、__int16
、および同様の型を使用できます。__int32
これは、カスタム ファイル形式、ハードウェア制御データ構造などの低レベル データ構造を扱う必要があるアプリケーションに非常に役立ちます。
GCC コンパイラで使用できる同等のものはありますか?
unicode - Unicodeで文字列を大文字/小文字に設定するにはどうすればよいですか?
これは主に、私が非常に興味を持っている理論上の質問です。(私はそれを自分でコーディングすることによってこれを行おうとはしていません。私は車輪を再発明していません。)
私の質問は、Unicodeで等価の大文字/小文字のテーブルがどのように機能するかです。
たとえば、ASCIIでこれを行う必要がある場合は文字を取得し、それが[az]の範囲内にある場合は、Aとaの差を合計します。
それがその範囲に当てはまらない場合は、10個程度のアクセント付き文字とñの小さな等価テーブルがあります。(または、256エントリの完全な等価配列を作成することもできますが、そのほとんどは入力と同じです)
ただし、数十万の文字があり、理論的には新しい言語または文字のセットを追加できることを考えると、Unicodeで同等性を指定するためのより良い方法があると思います(そして私はあなたがその場合、ウィンドウにパッチを適用する必要はありません)。
Windowsには、文字ごとにハードコードされた巨大な同等性テーブルがありますか?または、これはどのように実装されますか?
関連する質問は、SQLServerがUnicodeベースのアクセントと大文字と小文字を区別しないクエリをどのように実装するかです。éëèEÉÈとËがすべて「e」と同等であることを示す内部テーブルがありますか?
文字列の比較に関しては、それほど速くは聞こえません。
どのようにしてインデックスにすばやくアクセスしますか?そのフィールドの照合に対応する「ベース」文字に変換された値にすでにインデックスを付けていますか?
誰かがこれらのものの内部を知っていますか?
ありがとうございました!
winapi - Windows からの低レベルのキーボード入力
Windowsサービスからキープレスイベントをグローバルに検出するためにどのwin32呼び出しを使用できますか(1つのウィンドウだけでなく、キーが押されるたびにメッセージを取得したい)?
c++ - PC/Visual C++ でポインターがスタック上にあるかどうかを確認する方法
[これは具体的には PC/Visual C++ 用です (ただし、他の回答は非常にわかりやすいでしょう :))]
ポインターがスタック内のオブジェクトから来ているかどうかをどのように判断できますか? 例えば:
したがって、2 番目のアサート(pB)のみがトリップするはずです。インライン アセンブリを使用して、それが SS セグメント レジスタ内にあるかどうかを判断することを考えています。このための組み込み関数があるかどうか、またはこれを行う簡単な方法があるかどうかは誰にもわかりませんか?
ありがとう!RC
low-level - +演算子を使用せずに2つの数値を加算する最良の方法は何ですか?
友人と私は頭の体操を行ったり来たりしていますが、これを解決する方法がわかりません。私の仮定では、一部のビット演算子で可能ですが、確かではありません。
python - Python でのビット単位の減算
これは昨日の私の質問へのフォローアップです:
CMS は親切にも、C でビット単位の演算子を使用して 2 つの数値を加算する次の例を提供してくれました。
それはうまく機能し、次のようにPythonに移植しました。
どちらも足し算に使用でき、C プログラムは引き算にも使用できます。ただし、Python プログラムは減算のために無限ループに入ります。私はこれを理解しようとしており、さらに実験するためにここにプログラムを投稿しました: http://codepad.org/pb8IuLnY
Cがこれを処理する方法とCPythonがこれを処理する方法に違いがある理由を誰かアドバイスできますか?
operating-system - オペレーティングシステムはどのように「作られる」のですか?
OS の作成は大規模なプロジェクトのように思えます。誰でもどのように始めますか?
たとえば、Ubuntu をドライブに挿入した場合、コンピューターでそれを実行するにはどうすればよいでしょうか? (これは、私が本当に知りたいことだと思います。)
または、別の角度から見ると、ディスク上に存在し、OS として「実行」できる最小のバイト数はどれくらいですか?
(あいまいで申し訳ありません。私はこのテーマについて何も知らないだけなので、具体的には言えません。コンピューターの仕組みについてかなりの知識を持っているふりをしていますが、このテーマについてはまったく無知です。 )
c - C 標準ライブラリのより安全な代替手段
C 標準ライブラリは、I/O の安全性に関しては非常に貧弱です。多くの関数では、バッファ オーバーフロー ( gets
、scanf
) が発生したり、適切な引数が指定されていない場合にメモリを破壊したり ( scanf
) したりします。ときどき、これらの欠陥がない独自のライブラリを作成した進取の気性に富んだハッカーに出くわします。
あなたが見たこれらのライブラリの中で最高のものは何ですか? それらを製品コードで使用したことがありますか? もしそうなら、それは趣味のプロジェクト以上のものでしたか?