問題タブ [cpu-architecture]
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.
cpu-architecture - CPUレジスタのアクセスが速いのはなぜですか?
レジスタ変数は、高速アクセスを取得するためのよく知られた方法です ( register int i
)。しかし、レジスターが階層 (レジスター、キャッシュ、メインメモリー、セカンダリーメモリー) の最上位にあるのはなぜですか? レジスタへのアクセスを非常に高速にするすべての要因は何ですか?
c - ファイルの読み取りと書き込み時に互換性のあるアーキテクチャをアサートする最良の方法は?
バイナリファイルを読み書きするプログラムがあります。ファイルは同じプラットフォームでのプログラムの実行間で交換可能ですが、あるマシンで作成されたファイルは、タイプのサイズ、エンディアンなどにより、別のプラットフォームでは有効でない場合があります。
特定のファイルが特定のアーキテクチャでの読み取りに有効であると断言できるようにするための簡単な方法が必要です。私はファイルのクロスアーキテクチャを作成することに興味がありません(実際、ファイルはメモリマップト構造体です)。ファイルを読み取る前に、ファイルが同じサイズタイプなどのアーキテクチャで作成されていることを確認する方法だけが必要です。
1つのアイデアは、ファイルの先頭に一定のマジックナンバーを持つ構造体を書き込むことです。これを読み取って確認することができます。sizeof
もう1つは、さまざまなタイプを1バイト整数で格納することです。
これはCの場合ですが、同じ種類の問題がある言語の場合、問題は言語に依存しないと思います。
これを行うための最良の方法は何ですか?
この質問のタイトルの修正を歓迎します!
powershell - x86およびx64バージョンでPowerShellスナップインの開発を管理する方法
私は現在、x64またはx86を特に対象とする混合モードアセンブリ(ネイティブコードを含むアセンブリ)に特定の依存関係を持つPowerShellスナップインを作成しています。依存アセンブリの両方のバージョンがありますが、このスナップインのビルドと展開をどのように管理するのが最善か疑問に思っています。具体的には、次のとおりです。
- スナップインの2つのバージョン(1つはx86と1つはx64)が必要であり、2つの異なるバージョンのinstallutilを使用して、アーキテクチャごとに1つずつインストールする必要がありますか?
- #1が当てはまるとすると、2つの異なるバージョンのスナップインを異なる「プログラムファイル」および「プログラムファイル(x86)」ディレクトリにインストールすることをお勧めしますか?
- 2つの異なるアーキテクチャ用に構築するために、単一の参照以外のすべてを共有するプロジェクトのペアを構築するための理想的な(最も手間のかからない)方法は何ですか?
- スナップインが「AnyCpu」としてコンパイルされ、依存するdllが両方ともGACにロードされる場合、ランタイムは、現在実行中のPowerShellホストのアーキテクチャに基づいてGACから正しいアセンブリをロードしますか?
- アセンブリのロードコンテキストで問題が発生することなく、実行時にロードする依存dllを動的に選択する(さまざまな理由でGACにインストールできない場合)巧妙な方法はありますか?
math - 32ビット除算命令で64ビット除算を実行するにはどうすればよいですか?
これは(AFAIK)この一般的なトピック内の特定の質問です。
状況は次のとおりです。
32ビットRISCマイクロコントローラー(NECのV810のバリアント)に基づく組み込みシステム(ビデオゲームコンソール)があります。固定小数点数学ライブラリを書きたいです。この記事を読みましたが、付属のソースコードは386アセンブリで記述されているため、直接使用することも、簡単に変更することもできません。
V810には整数の乗算/除算が組み込まれていますが、上記の記事で説明した18.14形式を使用したいと思います。これには、64ビット整数を32ビット整数で除算する必要があり、V810は(符号付きまたは符号なし)32ビット/ 32ビット除算のみを実行します(32ビット整数と32ビット余りを生成します)。
だから、私の質問は、64ビット/32ビットの除算を32ビット/32ビットの除算でシミュレートするにはどうすればよいですか(配当の事前シフトを可能にするため)?または、別の方法で問題を調べるために、標準の32ビット算術/論理演算を使用して18.14固定小数点を別の固定小数点で除算するための最良の方法は何ですか?(「最良」とは、最速、最小、またはその両方を意味します)。
代数、(V810)アセンブリ、および擬似コードはすべて問題ありません。Cからコードを呼び出します。
前もって感謝します!
編集:どういうわけか私はこの質問を逃しました...しかし、それでも超効率的にするためにいくつかの変更が必要です(それはすでにあるかもしれませんが、v810によって提供される浮動小数点divよりも高速でなければなりません...)、ですから、評判ポイントと引き換えに私のために自由に仕事をしてください;)(そしてもちろん私の図書館のドキュメントのクレジット)。
c - CPU がワード境界でメモリにアクセスするのはなぜですか?
アクセス効率を上げるためには、メモリ内でデータを適切に配置する必要があるとよく耳にします。CPU はワード境界でメモリにアクセスします。
したがって、次のシナリオでは、CPU は 1 つの単語を取得するために 2 つのメモリ アクセスを行う必要があります。
なぜこれが起こる必要がありますか?CPU がワード境界でしか読み取れない根本的な原因は何ですか?
CPU が 4 バイト ワード境界でしかアクセスできない場合、アドレス ラインは 32 ビット幅ではなく 30 ビットだけでよいはずです。CPU の目には、最後の 2 ビットが常に 0 であることが原因です。
追加 1
さらに、CPU がワード境界で読み取らなければならないことを認めた場合、境界を読み取りたい場所から開始できないのはなぜでしょうか? CPUの目には境界が固定されているようです。
追加 2
AnTによると、バウンダリ設定はハードウェア化されており、メモリ アクセス ハードウェアによってハードウェア化されているようです。これに関する限り、CPUは無実です。
assembly - アセンブリ命令はどのようにして CPU の電圧変化に変わりますか?
私は過去 3 ~ 5 年間、C と CPython で作業してきました。ここが私の知識のベースだと考えてください。
MOV AL, 61h
それをサポートするプロセッサなどにアセンブリ命令を使用する場合、このコードを解釈して電圧信号としてディスパッチするプロセッサの内部には正確には何がありますか? そのような簡単な指示はどのように実行されるでしょうか。
MOV AL, 61h
またはに含まれる多数のステップを考えようとすると、アセンブリは高級言語のようにさえ感じますXOR EAX, EBX
。
編集: x86 ファミリが組み込みシステムで一般的ではない場合に、なぜこれを組み込みとして配置するのかを尋ねるいくつかのコメントを読みました。私自身の無知へようこそ。私がこれについて無知であれば、おそらく他の人も同様に無知であると思います.
皆様の回答に力を入れていることを考えると、お気に入りの回答を選ぶのは難しかったのですが、決断せざるを得ない気持ちになりました。けがをする必要はありません。
コンピュータについて学べば学ぶほど、自分が実際に知っていることに気が付かなくなることがよくあります。マイクロコードとトランジスタロジックに私の心を開いてくれてありがとう!
XOR EAX, EAX
編集 #2: このスレッドのおかげで、が よりも速い理由がわかりましたMOV EAX, 0h
。:)
multithreading - CPU で複数のスレッドを実行する
JVMが単一のCPUベースのマシンでユーザースレッドをスケジュールすることはわかっています.単一のCPが複数のプロセス/スレッドを並行して実行できないのはなぜですか,その機能を停止させる制約は何ですか
Also JVM is like a another software which is running in any machine,There may be thousands of other programs may waiting for the CPU cycle at a given time between this how JVM threads get the schedules from the CPU What is the parameter which gives the speed/possibility of the allocation of cycles for any process in any machine.
algorithm - CPU使用率はどのように計算されますか?
デスクトップには、現在のCPU使用率を示す小さなウィジェットがあります。また、2つのコアのそれぞれの使用法も示しています。
私はいつも疑問に思っていましたが、CPUはどのように処理能力のどれだけが使用されているかを計算しますか?また、CPUが集中的な計算を行ってハングアップした場合、CPU(またはこのアクティビティを処理するもの)は、ハングアップすることなく、どのように使用状況を調べることができますか?
iphone - armv6 と i386 の違いは何ですか?
libssh2.dylib ( http://www.libssh2.orgのlibssh2 ライブラリを使用して Matthew Wilkinson によってコンパイルされたサードパーティ ライブラリ) を xcode プロジェクトにリンクしようとしていますが、次のコードを試してみると:
エラーは次のとおりです。
libssh2 API を試すと、このエラーが発生します。誰でも何が問題なのか手がかりを持っていますか? これらは私がプロジェクトにリンクしたファイルです:
また、libssh2.dylib ファイルをフレームワークにリンクし、[ビルド] タブの [ヘッダー ファイルの検索] への再帰パスをファイル libssh2.a、libgcrypt.a、libgpg-error.a に追加しました。
operating-system - 32ビットと64ビットのOSとプロセッサ(IntelアーキテクチャとWindows)の違いは何ですか
私が知っている唯一の違いは、64ビットプロセッサと32ビットプロセッサのレジスタのサイズがそれぞれ64ビットと32ビットであることです。また、アドレスは64ビットプロセッサでは64ビットです。これら2つの間に他の違いはありますか?