get*_*ish 49 architecture 64-bit intel
请解释一下之间的区别x86,x32和x64?它有点令人困惑x86,x32因为大多数时候32位程序在x86上运行...
jww*_*jww 29
Hans和DarkDust的回答涵盖了i386/i686和amd64/x86_64,所以重新审视它们是没有意义的.这个答案将集中在X32上,并提供一些X32端口后学到的信息.
x32是使用32位整数,长整数和指针的amd64/x86_64 CPU的ABI.我们的想法是将32位数据类型的较小内存和缓存占用与较大的x86_64寄存器组合.(参考:Debian X32端口页面).
x32可以提供高达约30%的内存使用量减少和高达约40%的速度提升.该体系结构的用例是:
x32是最近添加的.它需要内核支持(3.4及以上),发行版支持(见下文),libc支持(2.11或以上),以及GCC 4.8及以上版本(改进的地址大小前缀支持).
对于发行版,它在Ubuntu 13.04或Fedora 17中可用.内核支持只需要指针在0x00000000到0xffffffff的范围内.从System V应用程序二进制接口,AMD64(使用LP64和ILP32编程模型),第10.4节,p.132(唯一的句子):
10.4内核支持
内核应该限制从0x00000000到0xffffffff之间的系统调用返回的堆栈和地址.
当引导与支持的内核,则必须使用syscall.x32=y选项.当构建一个内核,你必须包括CONFIG_X86_X32=y选项.(参考:Debian X32端口页面和X32 System V应用程序二进制接口).
以下是我在Debian人员在测试后报告了一些错误之后通过最近的端口学到的一些内容:
__x86_64__(和朋友)和 __ILP32__,而不是__i386__/ __i686__(朋友)__ILP32__单独使用,因为它在Clang和Sun Studio下出现意外pushq和popqadcq如果您正在寻找测试平台,那么您可以使用Debian 8或更高版本.他们在Debian X32 Port上的维基页面提供了所有信息.3秒的游览:(1)启动时在内核中启用X32; (2)用于debootstrap安装X32 chroot环境,以及(3)chroot debian-x32进入环境并测试您的软件.
Han*_*ant 28
x86指的是PC中使用的英特尔处理器架构.型号为8088(8086的8位总线版本,用于第一台IBM PC),8086,286,386,486.之后,他们切换到名称而不是数字,以阻止AMD复制处理器名称.Pentium等,从不是Hexium :).
x64是启用64位代码的x86指令集扩展的体系结构名称.由AMD发明,后来由英特尔抄袭,当他们无法让自己的64位拱门具有竞争力时,Itanium的表现并不好.其他名称是x86_64,AMD的原始名称,常用于开源工具.而amd64,AMD的下一个名字,常用于微软工具.英特尔自己的名字(EM64T和"Intel 64")从未流行过.
x32是一个与硬件无关的模糊术语.它倾向于用于表示"32位"或"32位指针架构",Linux具有该名称的ABI.
x86表示Intel 80x86兼容.这曾经包括8086,一个只有16位的处理器.现在它大致意味着任何具有32位Intel兼容指令集的CPU(通常是Pentium以后的任何指令).从不读取x32被使用.
x64是指x86兼容但也具有64位模式的CPU (最常见的是AMD引入的64位指令集;英特尔对64位模式的想法完全是愚蠢的,幸运的是英特尔承认现在是使用AMD的变种).
因此,大多数情况下您可以通过这种方式进行简化:x86英特尔在32位模式下x64兼容,在64位模式下是英特尔兼容.