- UID
- 1
- 精华
- 积分
- 76361
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
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
寻址方式添加了[rip+XXX]这种方式,比如:
mov rax,[rip+233]
看起来,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即可)。 |
|