問題タブ [instructions]
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.
x86 - SSE 命令: Byte+Short
shortタイプ(または)の宛先配列に追加する必要がある非常に長いバイト配列がありますint。そのような SSE 命令は存在しますか? それとも彼らのセットですか?
assembly - PC アセンブリ言語 (Paul Carter) - Prime.Asm サンプル ヘルプ JO と JE について
C コード:
アセンブリ コード (NASM):
ご覧のとおり、** の 2 つの指示をマークしました。
まず、MUL 命令は EAX*EAX を乗算し、値が大きすぎて EAX に収まらない場合は EDX:EAX に値を格納しますよね? 次に、プログラムはオーバーフローをチェックします。値が大きすぎて EAX に収まらない場合、システムはオーバーフローを検出し、OF=1 を設定しますか? なんで?値は、必要に応じて EAX と EDX の両方に保存されませんか?
2 つ目は JE 命令です。コメントの説明: if !(guess% factor !=0)。
プログラムがそこからジャンプするときは問題ありません:
しかし、オーバーフロー チェックのためにジャンプが行われた場合、または !(factor*factor < 0) の場合はどうなるでしょうか? 大丈夫ですか?どの値が比較されていますか? ZFをチェックするだけですか?しかし、別の理由(別の指示)で以前に変更されていませんか。
よろしくお願いします。
assembly - sqrtのavx3つのオペランド?
avx sqrt(パックされていない)命令に3つのオペランドがあるのはなぜですか?
これは次のような意味xmm1=xmm2=sqrt(xmm3)ですか?
編集:以下の詳細な回答ですが、要するに組立ラインは次のことを意味します:
c - x86 命令キャッシュはどのように同期されますか?
私は例が好きなので、C言語で自己修正コードを少し書きました...
...明らかに動作します:
しかし、正直なところ、私はそれがうまくいくとはまったく予想していませんでした。への最初の呼び出しで を含む命令c[2] = 0がキャッシュされることを期待していましたc。その後、への連続したすべての呼び出しは、へcの繰り返しの変更を無視しますc(何らかの方法で明示的にキャッシュを無効にしない限り)。幸いなことに、私の CPU はそれよりも優れているようです。
CPUcは、命令ポインタが(上記のmmapされたメモリへの呼び出しと同様に)大規模なジャンプを行うたびにRAM(RAMに存在すると仮定しても)を命令キャッシュと比較し、一致しない場合はキャッシュを無効にすると思います(すべて?)、しかし、私はそれについてより正確な情報を得ることを望んでいます. 特に、この動作が予測可能 (ハードウェアと OS の違いを除いて) であると見なされ、信頼できるかどうかを知りたいですか?
(おそらく Intel のマニュアルを参照する必要がありますが、それは何千ページにもわたる長さであり、迷子になりがちです...)
assembly - NASMで生成されたリストファイルのオペコードの括弧の意味は何ですか?
NASMによって生成されたリストファイルを見ると、3種類のオペコードがあることがわかります。
- 括弧なし。
- 丸括弧付き。
- 角括弧付き。
それらはどういう意味ですか?それらのそれぞれが使用されるとき?
これは、上記のすべてを示すリストファイルの例です。
assembly - 16進エディタで命令を変更するにはどうすればよいですか?
リバース エンジニアリングをいじっていますが、16 進エディターで jnz を jz に変更する方法がわかりません。システムによって異なることは理解していますが、この情報をどこで見つければよいかわかりません。私は Mac OS X 64 ビットで作業しており、IDA Pro でコードを逆アセンブルしました。
caching - プロセッサの命令はどこにありますか?CPUキャッシュまたは?
私の質問はCPUとその命令についてです。どこかに保管する必要があるので、どこに保管されているのか知りたいのですが?キャッシュにあると思います...
linux - ubuntuで実行中のプログラムの命令を監視していますか?
私はここで少し立ち往生しています。
アイデアは、実行中にプログラムによって実行されるすべての命令のファイルを取得したいということです。手元にある実行可能ファイル(ソースなし)だけでそれを実行し、どのアドレスでどの操作がいつ発生しているかを判別できるようにしたいと思います。
たとえば、Google Chrome、Firefoxなどで実行できるようにしたいと思います。
これを、現在取り組んでいるパフォーマンス予測システムに使用したいと思います。システム1で実行される順序で実行される各命令を取得できるかどうかを判断します。システム2で実行されている同じプログラムの実行時間をシミュレート/モデル化できるため、次のことが可能になります。予測(100%の精度ではわかりませんが)L1 / L2キャッシュミス、L1 / L2キャッシュヒット、TLBヒット/ミス、ページフォールト、浮動小数点乗算操作にかかる時間など。
これを2つの異なるシステムで実行してみたいと思います。
システム1:Intel Core 2DuoCPU上のUbuntu10.10
システム2:2x AMD SixteenCoreOpteronモデル6274を搭載したシステム上のUbuntu12.04
(必要に応じてOSを確実に変更できますが、可能であればUbuntuを使用したいと思います)
これは可能ですか/どうすればそれを行うことができますか?私はデバッガーで知っています、あなたはそれらを使ってすべてをステップスルーすることができます、しかし私は利用可能なソースを持っていません。
assembly - 取得後の 0 のテスト
ちょっと意味のわからないアセンブリ コードのスニペットがあります
test eax,eax最初はと にjz続くに戸惑いましたgets。
「入力が 0 になるのはなぜですか?」. 次に、「わかりました。文字列はnullbyteで終了するため、空の文字列はテスト設定ZFになるはずです」と思いました
しかし、実際にテストしたところ、jz は取得されませんでした。プロンプトでEnterキーを押しただけでも。
私の間違いはどこですか?
emulation - 命令セットエミュレータガイド
ゲームボーイやその他のハンドヘルド コンソール用のエミュレータを作成することに興味がありますが、最初のステップは命令セットをエミュレートすることであると読みました。ここで、初心者が Commodore 64 8 ビット マイクロプロセッサをエミュレートするようにというリンクを見つけましたが、命令セットのエミュレートについては何も知りません。私は mips の命令セットを知っているので、他の命令セットはなんとか理解できると思いますが、問題はそれらをエミュレートすることの意味です。
注: 誰かが初心者向けの命令セット エミュレーションのステップバイステップ ガイドを提供してくれれば、本当にありがたいです。
注 2: C で書く予定です。
注 3: これは、エミュレーション全体を学習する最初の試みです。
ありがとう
編集:有望と思われるエミュレーターを作成するための詳細なステップバイステップガイドであるこのサイトを見つけました。私はそれを読み始め、エミュレーターの作成を検討している他の人々にも役立つことを願っています.