0xAA55 发表于 2014-11-6 20:37:56

有关x64的一些讨论

64位的架构其实有两种,一种是英特尔“发明”的IA-64,一种是AMD“发明”的AMD64。

IA 64的处理器,据我所知,有以下特性:
1、并行性,每个指令有三个slot,每个slot能做一件事——一条指令做三件事。
2、不兼容性,IA-64的CPU不兼容80x86的指令。

而AMD64则看起来就像我们平时用的x86的扩展,特点是:
1、兼容性,兼容80x86指令。
2、寄存器:
    eax->rax
    ecx->rcx
    edx->rdx
    ebx->rbx
    esp->rsp
    ebp->rbp
    esi->rsi
    edi->rdi
    eip->rip
    新增r8,r9,r10,r11,r12,r13,r14,r15
    寻址方式添加了这种方式,比如:
    mov rax,
看起来,AMD64就像是x86的直接扩展。

至少,我还没见过IA64的处理器。AMD在2003年出了AMD64以后,Intel便追随AMD出了兼容的指令集,有人说那是Intel唯一一次追随AMD。早期的Microsoft的一些SDK(典型的有SDK2003)就提供了对IA-64的支持,而现在大家使用的x64的Win7、Win8、Win8.1等都是AMD64的(当然IA-64的版本也可下载到)。
IA-64并没完全消失,但是基本上在国内没多少人使用。据说一些特别的服务器计算机使用的是IA-64的处理器,虽然主频不太高(大概1.5GHz左右吧?)但是据说性能不错。

我不知道从哪个版本的VS开始就支持x64了。好像VS2012默认只支持编译为x86、AMD64、ARM三种指令集的程序,IA64好像要用特殊的方式编译。VS2012编写X64程序的时候不能使用内联汇编(_asm或__asm关键字),但是可以“外联”汇编(用NASM编译,命令行开关是-f win64,然后C程序像使用静态库一样使用这个NASM编译出的OBJ即可)。
页: [1]
查看完整版本: 有关x64的一些讨论