Вы находитесь на странице: 1из 11

c    

     
    
         
  


26.03.2009




.
++ 64 . , ,
.
++.






64- . 32- (
) ,
. ,
(2 ).
, ,
, 64-
.

. , .
++, . ,
.
(, 32 64) , ,
, .
.
, , .
,
64- . ,
. ,

. .

, -
, .



 

  



++ . ,
, [1],
. -
.
, ,
++. 1.

ptrdiff_t


(32
)
32


(64
)
64

size_t

32

64

,
.

.
,
-1 .
.
sizeof().
.
,
.

intptr_t, uintptr_t,
32
64
SIZE_T, SSIZE_T,
INT_PTR,
DWORD_PTR

N1. .

, .
64- 64 , 32- - 32 .
"memsize-":
: memsize- ,

32- 64-. , 1, memsize.
, ( 64
), memsize-.
, .

  

     
"" ( )
. 64 "" .
. "" ,
- . , ,
32 (4 ).
.
 
 
   

32- , size_t 64-


8 . , (4
). .
.

 
  
 

  !"#!"$!" 
$ %  
&&&
%  '(!"#!"$!" 

, "a16 * b16 * c16"


UINT_MAX (4Gb). 32- ,
. 64-
UINT_MAX . ,
6.000.000.000 , a16, b16 c16 3000, 2000
1000 . "a16 * b16 * c16" ,
++, int, .
.
ptrdiff_t .
, .
, 5 .
32- 64-:
 ()*
 +(!


,
-(.!* /-0

% (

,'/ 

% (% ' '+11 %   " )# %2 


%

234 53% 11 $$  " )# %2 

, "ptr + (A + B)":
? ++ A int unsigned.
? A B. 0xFFFFFFFF unsigned.

"ptr + 0xFFFFFFFFu",
. 32-
, "ptr - 1" 3.
64- 0xFFFFFFFFu,
.
.

! 
 
  






"
 

  

memsize- memsize-
64-
. :
6 (+ 7  
2   8(89( 6 ''8
.&&&0

, Count > UINT_MAX. , 32-


UINT_MAX . 64-
.
Index [0..UINT_MAX], "Index !=
Count" , .

# 


#$


 #  


,
, 32- . ,
size_t, -
unsigned. , 64- .
,
:
$6:  %%.
&&&

0

  : ;%<:= <>? @<A B?6

$6% %%C% # $6:  %%. 


&&&


  : ;%<:= <@<AB?6 

0

64- .
, ,
.
.
, (. [1]), ,
.

%
    #  
- , ,
:
1.? .
.
2.? .

. , , ++.
, , ,
.
3.? .
,
. , .
,
, .
[2] ,
:



 
   

, "" . -
, - . , ,
.
, .
, ,
.


#   
,
:
1.? ] . ]
. .
2.? ] . ] - ;
.
3.? ] () . ]
, : ""
, [3].
(
).
4.? . ,

64- .
[4] ( 2),
, (front-end
compiler).


 
 


(back-end compiler)
.
,
, .

 & #

   
,
.

,
. , ,
. 3 ,
.

 

   
!" 
# 



$  %&'
,
- "" .
.

  & #  


   
] ,
, , ( abstract syntax tree). .
?
,
.
.
4 5.
 
.
 (*
 #('/
%

2343#

0

4 - ( )

()   


, -
.
++ , ,
, .

  & #
 
   

. , ++
. ,
(, ..), ++ , ,
.

.
, .
. ++
, . 6
, .
 $2 $ #8 
 
.
 (*
2#(/&
$2 $'#
0

6 - ( ).

(a+b),
( 7).

*)   

 + 
  


.

 !
    
M ,
.
[2]:
? - , ;
? - ,
;
? - ,
.

,
.
, , -, , , -,
.
,
.
,
, .

, , , .

'
   
:
? (front end compiler);
? .


++ OpenC++ [6], VivaCore [7].
,
( ) .
++
YACC Bison.
,
3.4, .
++.
, ++. 1
memsize-, ( 1).
(memsize). ,
, 64- ,
(, ptrdiff_t, size_t, void* .) .
,
- [5]. ,
, .
.
,
( 1.4) :
<M_ _> > <virtual> <M_> CheckVirtual()
CheckVirtual() - -. CheckVirtual() ,

. CheckVirtual()
.
++, [1],
-. -
, , -
.

'
#

Viva64 [8]. Viva64 - ,
++.
64-
.

( )


- , :
? (front end compiler);

? .

,
.

, ,
. ,
64- . 64-
.
VivaCore [7] 64-
[1] Viva64 [8].

 
 " 
1.? . 20 ++ - 64- // RSDN Magazine #12007.
2.? ., ., .. : , . : .
. - ].: "", 2003. - 768 .: . - . . .
3.? .., M ]... . ].:
, 2001. - 224 .
4.? .. ++.
- .
], 1999.
5.? . / . ., .
. ; ]. . - . ]. . , . . , 62 . 21
, 2- ., . . ]. -]M 1999.
6.? OpenC++ (C++ frontend library). http://opencxx.sourceforge.net/.
7.? VivaCore Library. http://www.viva64.com/ru/vivacore-library/.
8.? Viva64 Tool. http://www.viva64.com/ru/viva64-tool/.

Вам также может понравиться