問題タブ [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.
c - Linux 上の C でスタック オーバーフローを予測することは可能ですか?
x86 Linux システムでスタック オーバーフローを引き起こす特定の条件があります。
struct my_big_object[HUGE_NUMBER]
スタック上。それを歩くと、最終的に が発生しSIGSEGV
ます。alloca()
ルーチン ( と同様ですが、malloc()
スタックを使用し、自動的にそれ自体を解放し、SIGSEGV
大きすぎる場合は爆発します)。更新: 最初に述べたように、 alloca() は正式に廃止されたわけではありません。それはただ落胆するだけです。
特定のオブジェクトに対してローカル スタックが十分に大きいかどうかをプログラムで検出する方法はありますか? を介してスタックサイズを調整できることを知っているulimit
ので、方法があることを願っています(ただし、移植性はありません)。理想的には、次のようなことができるようになりたいです。
performance - 最新の CPU は正確にどのくらい「高速」ですか?
組み込みシステムと初期の 8/16 ビット PC (6502、68K、8086) をプログラミングしていたとき、各命令の実行にかかる正確な時間 (ナノ秒またはマイクロ秒) をかなりよく把握していました。ファミリによっては、1 (または 4) サイクルが 1 回の「メモリ フェッチ」に相当し、キャッシュを気にする必要がなければ、関係するメモリ アクセスの数に基づいてタイミングを推測できます。
しかし、最近の CPU では混乱します。それらがはるかに高速であることは知っていますが、見出しのギガヘルツ速度は、各命令に必要なクロックのサイクル数を知らなければ役に立たないことも知っています.
したがって、2GHz Core 2 Duo (としましょう) で、2 つのサンプル命令のタイミングを誰かが提供できますか。最良のケースと最悪のケース (キャッシュに何もない/すべてがキャッシュにあると仮定) が役に立ちます。
命令 #1: 1 つの 32 ビット レジスタを 2 番目に追加します。
命令 #2: 32 ビット値をレジスタからメモリに移動します。
編集:私がこれを尋ねる理由は、単純なコードを見て、最も近い桁までの時間を大まかに測定できるようにする「経験則」を開発しようとすることです。
編集#2:興味深い点を含む多くの回答がありますが、(まだ)誰も時間で測定された数字を書き留めていません. 質問に「複雑さ」があることは承知していますが、おいでください: NYC のピアノ調律師の数を見積もることができれば、コードの実行時間を見積もることができるはずです...
次の (ダム) コードを使用します。
実行にかかる時間をどのように見積もればよいでしょうか... 1 フェムト秒ですか? 1ギガ年?
c# - 64 ビット マシンで C# アプリケーションを 32 ビットとして実行する
アプリケーションを 64 ビット マシンで 32 ビットとして実行するにはどうすればよいですか?
コードは C# で記述されています。
assembly - MIPSからx86アセンブリに切り替えるときに知っておくべきことは何ですか?
学校では、しばらくの間MIPSアセンブリ言語でプログラミングを行ってきました。私はx86アセンブリを掘り下げることに興味があり、それはやや難しいと聞きました(私のMIPS教科書でさえこれを述べています)。
x86の世界に飛び込む前に、MIPSプログラマーとして知っておくべきコア情報は何ですか?
c# - x64ではTypeLoadExceptionが発生しますが、structlayoutsを使用するx86では問題ありません。
実際の例外を確認するには、64ビットマシンが必要です。問題を再現するダミークラスをいくつか作成しました。
これを64clrで実行すると、タイプロード例外が発生します。
ターゲットCPUを32に強制すると、正常に動作します。
また、InnerTypeをクラスから構造体に変更すると、それも機能します。誰かが何が起こっているのか、私が間違っているのかを説明できますか?
ありがとう
x86 - 新しい命令セットの開発
Intel は、SSE の 256 ビット操作への拡張を含むAVXと呼ばれる新しい命令セットをリリースする予定です。つまり、4 つの倍精度要素または 8 つの単精度要素のいずれかです。
AVX をサポートするハードウェアがまだないことを考えると、AVX 用のコードを開発するにはどうすればよいでしょうか? より一般的に言えば、開発者は、たとえば、サポートする CPU がリリースされたときにソフトウェアを準備したい場合など、存在しないハードウェア用のコードをどのように記述できるでしょうか?
assembly - x86: ZF は常に AND によって更新されるわけではありませんか?
x86 でコードをデバッグしていますが、結果がゼロでない場合、AND 命令で ZF フラグがクリアされないことがあります。問題のあるコードは次のとおりです。
デバッグ用に AND の後にブレークポイントを追加しました。ブレークポイント EDX==0x80000 および ZF==1 で停止した場合。ただし、EDX!=0 の場合は ZF をクリアする必要があります。デバッガーでシングルステップを実行すると、コードは完全に正常に動作しますが、通常の実行中は一貫して失敗します。
これは、デバッガー セッションのスクリーンショットです。
ヒントはありますか?
それが問題であれば、コードは JIT によって生成されるので、データを実行しています。
前もって感謝します。
sql-server - SQL Server x64 および x86 リンク サーバー
SQL Server からアクセスする必要がある Visual FoxPro テーブルがあります。Sql Server x86 では、リンク サーバーを作成するだけです。残念ながら、VFP 用の x64 ドライバーはありません。そのため、Sql Server x64 はそれにリンクされたサーバーを作成できません。
これまでのところ、次のオプションを思いつきましたが、どれも特に好きではありません。
- クエリが x64 -> x86 -> VFP から移動するように、x86 Sql Server をリレーとして使用するように設定します。
私は開発者であることに加えて、システム管理者でもあるので、これはあまり気にしません。したがって、これは、さらに別の Sql Server にパッチを適用し、維持し、監視する必要があることを意味します (別のインスタンスを使用するだけではない場合)。
また、VFP プロバイダーは 4 つの部分の構文では機能しないため、OPENQUERY を使用する必要があります。OPENQUERY ステートメントを別の OPENQUERY ステートメントに埋め込むために発生する必要があるすべての一重引用符のエスケープを考えると、頭が回転します....
- CLR テーブル値関数を作成しますが、アセンブリは (おそらく?) x64 でもあるため、実際にクエリを実行するには、proc (IPC? Webservice?) を実行する必要があります。
TVF にはスキーマが必要であることが判明したため、このオプションは最初に考えたほどクリーンではありません。私は、WCF クライアントを MSSQL に入れるためにスパイクを行いました。MSSQL は、Sql XML データ型関数で解析できる XML の単一の列を返します。それは機能し、実際には変数をパラメーターとして受け取るため、OPENQUERY よりもクエリに少し適しています。これにより、一重引用符と EXEC ダンスのほとんどを節約できます。
もちろん、Sql 内の WCF は完全にサポートされておらず、かなり大きなハックのような匂いがします。私は、パフォーマンスと信頼性に関してかなり深刻な懸念があります。
- Sql Server から VFP へのクエリの作成を停止し、かなりの量のクライアント コードを書き直します。
明らかに、これは「正しい」答えです。ただし、Sql Server テーブルと VFP テーブル間の結合に依存するクライアント コードがかなりあります。これを書き直して一時テーブルにデータを入力したり、クライアント側の結合を実行したりするのは、かなり大きな負担のようです。
誰かがより良い代替案、または同様の経験を提案できることを願っています.