O ,
02.10.2008
, ,
, .
20 . -
,
.
?
, (
!). IA32 (Intel Architecture
32) 4 (2^32) ,
2, , ,
[1].
2,
.
32- -
64- SPARC64 Intel Itanium. hi-end
.
AMD64 AMD EM64T Intel.
, ,
. AMD. EM64T
AMD64 Intel. AMD64
: , , .
AMD64 (
), .
32- 64- ,
16- 32-
.
c
AMD64 ,
AMD. , [2].
,
AMD x86-64, .
AMD x86-64 , -
x86 [1]. 64-
64- , 16-
32- .
64- x86 ,
. ,
, CAD- . 64 .
, x86
.
.
x86-64 :
1. ( 1):
V 8 (general-purpose registers);
V 16 64-;
V 8 128- XMM ;
V (REX) .
2. "Long Mode" ( ),
1:
V 64- ;
V 64- (RIP);
V (flat) .
V
1. x86-64V
V
1. V
V2V V V V
VV V
V
VV V
VV
V
V V V86V V
V
V
VV
V V
V
V V
VV64-
V V
V
V
V
VV V
V
2. , V
V
VVV2V V V86V
V VVe cyVeVV8664 V
V8V
V
VV
VV
VV
V
VV4V V !"V #"V $"V %"V& V #'V S V %(V S'V
V
V
V) V86-64V
V8V
V
V
VVVV
V
VV32-V
V64-VV*
V
V
V
V
V
V64-V
V
VV
V VV V V
VV
V
V
VVV
V
V V
V
VV
) V86-64V
VV
V V86VV
V
V
V
VV
V+,- V
V VV
V
-V
V
V
VV*
V
V86V
V
V
V
VV
V.
VVV VV V
V
VV
VV V
VVVV
/
VV0V V
V
V
V
V
VV
VVV
V
V 128-V-
V*
VSS VVSS 2Vs e 1+,VS(2%Ve3e+s1+4V
V
VV V
VV
VV
VV128V"22V VV
V
VVV
V
V
VV
V
4VV VVV
V
V V
V
V
V
V
VV
V
V
V
Vs1+,e-1+s356c31+V6317e-838VS(2%4V
VV
VV-VVV
VV
V
VV
V 64-V-
V*
V631e18Ve3e+s1+V22"4VV3%9:;V
VV
V
VV
VV
VV64-V22"V
V
VV128-V
V
VV
V
V
VVV
V
V
V
V
V
4VV
VV
V 87V
V VV
VV
V
VV V87V
V
VVV87V V
.
, XMM
MMX .
1 ,
x86-64.
.
long-. (protected) .
Long- : 64- . 64-
, x86-64.
16- 32 . Long- (real)
(virtual-8086) , .
64- 64- ,
64- .
, 64- . 64- 64 (RIP) c (flat)
, .
64-
REX.
64- 64 , x86-64
. 32 .
REX.
64- 64- RIP. x86
IP
. RIP- -
, .
(opcode)
64- .
64-
16- 32- .
32- 16-
4 . 16- 32 .
,
x86, ( ,
) 64- .
AMD x86-64:
V 64- .
V .
V .
V 32- 64- .
V 32- .
32- AMD x86-64 .
- ,
. ,
.
, AMD x86-64 .
.
5-15%.
AMD64. Microsoft Windows XP 64bit, Windows Server 2003 64bit, Windows Vista
64bit. UNIX 64- ,
Linux Debian 3.1 x86-64. ,
64-. 32-, .. AMD64
.
64- Windows, , WoW (Windows-onWindows 64), 32- 64-
. AMD64,
64- Windows [3, 4], Win64.
. 64- 16
(2^64), Win64 16 (2^44).
. 1 (2^40)
. ( ) 4
(2^52). ,
, (. 3).
4
,
2 (3,
32-
/3G#)
,
64-
(paged
470
pool)
(non256
paged pool)
System Page Table (PTE)
660 - 900
?
3 Windows
16
4,
/LARGEADDRESSAWARE (2
)
8
128
128
128
Win32, .
8 8 ( 2 2 Win32
). Windows ,
4.
o
Windows XP Home
4 , 1 CPU
Windows XP Professional
4 , 1-2 CPU
Windows Server 2003, Standard
4 , 1-4 CPU
Windows Server 2003, Enterprise
64 , 1-8 CPU
Windows Server 2003, Datacenter
64 , 8-32 CPU
Windows Server 2008, Datacenter
64 , 2-64 CPU
Windows Server 2008, Enterprise
64 , 1-8 CPU
Windows Server 2008, Standard
4 , 1-4 CPU
Windows Server 2008, Web Server
4 , 1-4 CPU
Vista Home #asic
4 , 1 CPU
Vista Home Premium
4 , 1-2 CPU
Vista #usiness
4 , 1-2 CPU
Vista Enterprise
4 , 1-2 CPU
Vista Ultimate
4 , 1-2 CPU
? 4 ! Windows
128 , 1-2 CPU
32 , 1-4 CPU
1 , 1-8 CPU
1 , 8-64 CPU
2 , 2-64 CPU
2 , 1-8 CPU
32 , 1-4 CPU
32 , 1-4 CPU
8 , 1 CPU
16 , 1-2 CPU
128 , 1-2 CPU
128 , 1-2 CPU
128 , 1-2 CPU
Win32 4. 64
, .. 0x10000. Win32,
DLL 4.
, AMD64, "CPU No Execution" ,
Windows "DataExecution Protection" (DEP),
.
, .
AMD64 ,
, .
Win64 (calling
convention). Win32 ( ):
__stdcall, __cdecl, __fastcall .. Win64 .
, integer:
V RCX:
V RDX:
V R8:
V R9:
integer . float
XMM0-XMM3 , .
,
64-, 32- . , 64-
, (DLL) 64-.
64-
.
[5].
!
. , ++
. 32-
AMD64 [6]
. .
, 32 . , ,
.
. . -,
. , ,
Windows ,
Wow64. - .
. ,
Visual C++ 64-
[7].
64 . 64- ,
( ).
, 32-
. "20 ++- 64 " [8].
, /++.
(C#) , .
, ,
/++. , C#,
/++,
.
, 64-
[9]. ,
, Viva64 ( Windows )
PC-Lint ( Unix ). .
" 64- "
[10].
"#
AMD AMD64
. AMD64 , 64- ,
32- .
AMD64 .
32- AMD64, , , -,
, , , -, 10%
" ", ,
.
, AMD64
,
. .
.
$%&#
!
1.V Intel Software Developer's Manual. Volume 1: #asic Architecture.
http://www.viva64.com/go.php?url=212
2.V AMD x86-64 Architecture Programmer's Manual. Volume 1: Application Programming.
http://www.viva64.com/go.php?url=213
3.V Mike Wall. Tricks for Porting Applications to 64-#it Windows on AMD64 Architecture.
http://www.viva64.com/go.php?url=214
4.V Matt Pietrek. Everything You Need To Know To Start Programming 64-#it Windows Systems.
http://www.viva64.com/go.php?url=215
5.V Software Optimization Guide for AMD Athlon 64 and AMD Opteron Processors.
http://www.viva64.com/go.php?url=59
6.V Compiler Usage Guidelines for 64-#it Operating Systems on AMD64 Platforms.
http://www.viva64.com/go.php?url=216