問題タブ [x86]
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.
.net - 混合.NET開発環境でのアンマネージドx64アセンブリ
一部の開発者が64ビットマシンと32ビットマシンで作業しているが、チームの半分がx86、残りの半分がx64である必要があるアンマネージアセンブリを参照する必要がある場合はどうすればよいですか?64ビットリグの誰かが最新になるたびに参照を手動で更新する以外に解決策はありますか?
android - Android: PC ポートはありますか?
x86
コンピューターで Android を実行することは可能ですか?
gcc - gcc での x86 AT&T アセンブラーの関数のコピーと呼び出し
AT&T Assembler Syntax for gcc で次のコードを書きました
実際にやりたいのは、関数コードto_gen_inner
を malloc で割り当てているメモリにコピーしてから、そこにジャンプすることです。このコードは、セグメンテーション違反を生成します。gdb サイス:
私は実際に理由を知りません。私はすでにlcallとlretを使用していますが、これは絶対呼び出しと考えられています.callとretを使用すると、どちらも機能しませんでした.同じエラーです。
何が間違っているのかわかりません。誰でも私を助けてもらえますか?
.net - Windows 2008 64 ビットでの .NET アプリケーションのモード
.NET アプリケーションは Windows 2008 x64 でどのように動作しますか? 32 ビット アプリケーションとしてですか、それとも 64 ビット アプリケーションとしてですか? 違いはありますか?
c - 切り捨て時の浮動小数点の丸め
これはおそらく x86 FPU の専門家に対する質問です。
[最小、最大] の範囲でランダムな浮動小数点値を生成する関数を作成しようとしています。問題は、私の生成アルゴリズム (興味があるなら、浮動小数点 Mersenne Twister) が [1,2) の範囲の値しか返さないことです。つまり、包括的な上限が必要ですが、「ソース」で生成された値は排他的上限から。ここでの問題は、基になるジェネレーターが 8 バイトの double を返すことですが、必要なのは 4 バイトの float だけであり、デフォルトの FPU 丸めモードである Nearest を使用しています。
私が知りたいのは、この場合の切り捨て自体が、FPU 内部の 80 ビット値が十分に近い場合に戻り値が最大値を含む結果になるかどうか、または最大値に乗算する前に最大値の仮数をインクリメントする必要があるかどうかです。 [1,2) の中間ランダム、または FPU モードを変更する必要があるかどうか。もちろん、その他のアイデアも。
現在使用しているコードは次のとおりです。1.0f が 0x3f800000 に解決されることを確認しました。
違いがある場合、これは Win32 MSVC++ と Linux gcc の両方で動作する必要があります。また、SSE 最適化のいずれかのバージョンを使用すると、これに対する答えが変わりますか?
編集:答えはイエスです。この場合、double から float への切り捨ては、結果に max を含めるのに十分です。詳細については、Crashworks の回答を参照してください。
assembly - x86には、保存された値を保持するアトミックインクリメントがありますか?
私は見つけましlock inc addr
たが、それは保存された値のコピーを保持せず、同じスレッドでの直後の読み取りでさえ、競合する書き込みの後に来る可能性があります。
私が見つけた最良の解決策はload
//inc
ループcas
です。
x86 - プロセッサはどのように条件を処理しますか?
それで、SUPER低レベルのIF()はどのように見えますか、x86プロセッサによってどのように処理されますか?
assembly - EMMS命令実行時間?
The Art of Assembly: The MMX Instruction Set を読んでいます。いくつかの MMX 命令を実行した後、EMMS
命令を実行して FPU をリセットする必要があります。EMMS 命令は非常に遅いと書かれています。
ただし、EMMS
実行時間をプロファイリングしてどれだけ遅いかを確認すると (RDTSC
クロック サイクルをカウントするために使用)、0 サイクルで実行されているように見えます。
どうしたの?どこかで間違いを犯したのでしょうか、それとも Art Of Assembly は古くなっていますか?
pointers - dwordptrの使用法の混乱
使用する場合はアセンブリ言語で
次に、ebxが指す値をコピーすることを意味します(ebxには実際の値ではなくアドレス値が含まれ、この命令はアドレスの実際の値をコピーします)?
使用する場合
次に、変数「some_variable」自体の値をeaxにコピーすることを意味し、変数「some_variable」が指す値をコピーするのではありませんか?
私の理解は正しいですか?
はいの場合、同じアセンブリ命令に2つの異なる意味がある理由がわかりません。最初のケースでは間接参照のレベルがありますが、2番目のケースでは追加の間接参照レベルはありません。
任意のコメント?
編集:
すべての[]が効果を発揮するわけではありません。たとえば、命令xchgは、edxが指す値をロードするin-directionのレベルを取ります。
ソースコード全体は、から見つけることができます、
performance - 各アセンブリ命令に必要な CPU サイクル数は?
特定のアセンブリ命令に必要な CPU サイクルについて説明しているインテルのオンライン ブックがあると聞きましたが、(一生懸命試した後) 見つけることができません。CPUサイクルを見つける方法を教えてください。
以下に例を示します。以下のコードでは、mov/lock は 1 CPU サイクル、xchg は 3 CPU サイクルです。
ところで: ここに私が投稿したコードの URL があります: http://www.codeproject.com/KB/threads/spinlocks.aspx