03 Addresses and Data Representations

background image

University  of  Washington  

Sec3on  1:  Memory,  Data,  and  Addressing  

¢

Preliminaries  

¢

Represen3ng  informa3on  as  bits  and  bytes  

¢

Organizing  and  addressing  data  in  memory  

¢

Manipula3ng  data  in  memory  using  C  

¢

Boolean  algebra  and  bit-­‐level  manipula3ons  

Addresses  

background image

University  of  Washington  

Addresses  and  Pointers  

¢

Address  is  a  loca%on  in  memory  

¢

Pointer  is  a  data  object    

that  contains  an  address  

¢

Address  0004  

stores  the  value  351  (or  15F

16

)  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

5F  

01  

00  

00  

Addresses  

background image

University  of  Washington  

Addresses  and  Pointers  

¢

Address  is  a  loca%on  in  memory  

¢

Pointer  is  a  data  object    

that  contains  an  address  

¢

Address  0004  

stores  the  value  351  (or  15F

16

)  

¢

Pointer  to  address  0004  

stored  at  address  001C  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

04  

00  

00  

00  

5F  

01  

00  

00  

Addresses  

background image

University  of  Washington  

Addresses  and  Pointers  

¢

Address  is  a  loca%on  in  memory  

¢

Pointer  is  a  data  object    

that  contains  an  address  

¢

Address  0004  

stores  the  value  351  (or  15F

16

)  

¢

Pointer  to  address  0004  

stored  at  address  001C  

¢

Pointer  to  a  pointer  

in  0024  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

04  

00  

00  

00  

1C  

00  

00  

00  

5F  

01  

00  

00  

Addresses  

background image

University  of  Washington  

Addresses  and  Pointers  

¢

Address  is  a  loca%on  in  memory  

¢

Pointer  is  a  data  object    

that  contains  an  address  

¢

Address  0004  

stores  the  value  351  (or  15F

16

)  

¢

Pointer  to  address  0004  

stored  at  address  001C  

¢

Pointer  to  a  pointer  

in  0024  

¢

Address  0014  

stores  the  value  12    

§

Is  it  a  pointer?  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

04  

00  

00  

00  

1C  

00  

00  

00  

5F  

01  

00  

00  

0C  

00  

00  

00  

Addresses  

background image

University  of  Washington  

Data  Representa3ons  

¢

Sizes  of  objects  (in  bytes)  

§

Java  data  type

 C  data  type

 Typical  32-­‐bit

 x86-­‐64  

§ 

boolean

 bool

 1

 1  

§ 

byte

 char

 1

 1  

§ 

char

 

 2

 2  

§ 

short

 short  int

 2

 2  

§ 

int

 int

 4

 4  

§ 

float

 float

 4

 4  

§ 

  long  int

 4

 8  

§ 

double

 double

 8

 8  

§ 

long

 long  long

 8

 8  

§ 

 

 long  double

 8

 16  

§ 

(reference)

 pointer  *

 4

 8  

 

Addresses  

background image

University  of  Washington  

Byte  Ordering  

¢

How  should  bytes  within  mul3-­‐byte  word  be  ordered  in  

memory?  

¢

Say  you  want  to  store  the  4-­‐byte  word  0xaabbccdd  

§

What  order  will  the  bytes  be  stored?  

 
 

¢

Endianness:  big  endian  vs.  liVle  endian  

§

Two  different  convenLons,  used  by  different  architectures  

§

Origin:  Gulliver’s  Travels  (see  CS:APP2  textbook,  secLon  2.1)  

Addresses  

background image

University  of  Washington  

Byte  Ordering  Example  

¢

Big  endian  (PowerPC,  Sun,  Internet)  

§

Big  end  first:  most-­‐significant  byte  has  lowest  address  

¢

LiVle  endian  (x86)  

§

LiYle  end  first:  least-­‐significant  byte  has  lowest  address  

¢

Example  

§

Variable  has  4-­‐byte  representaLon  0x01234567

§

Address  of  variable  is  0x100

0x100   0x101   0x102   0x103  

01   23   45   67  

0x100   0x101   0x102   0x103  

67   45   23   01  

Big  Endian  

LiVle  Endian  

01   23   45   67  

67   45   23   01  

Addresses  

background image

University  of  Washington  

Represen3ng  Integers  

¢

int A = 12345;

¢

int B = -12345;

¢

long int C = 12345;

Decimal:! 12345!

Binary: 0011 0000 0011 1001

Hex:

3 0 3 9 -> 0x00003039

39  

30  

00  

00  

IA32,  x86-­‐64  A  

30  

39  

00  

00  

Sun  A  

C7  

CF  

FF  

FF  

IA32,  x86-­‐64  B  

CF  

C7  

FF  

FF  

Sun  B  

Two’s  complement  representa3on    

for  nega3ve  integers  

00  

00  

00  

00  

39  

30  

00  

00  

X86-­‐64  C  

30  

39  

00  

00  

Sun  C  

39  

30  

00  

00  

IA32  C  

Addresses  

low  addr  

high  addr  


Wyszukiwarka

Podobne podstrony:
03 lubrication and maintenance
03 Errors and Bugs
lecture 13 spc and data integration handouts
H Beam Piper Fuzzy Papers 03 Fuzzies and Other People
Edgar Rice Burroughs New Tarzan 03 Tarzan and the Snake People # Barton Werper
SpyARPA BAA 13 03 Safe and Secure Ops Amend 3
Jayne Ann Krentz Arcane Society 03 Sizzle and Burn
Scott, Martin Thraxas 03 Thraxas and the Sorcerers
09 Torrid Tarot 03 Sword And Crown Lauren Dane
[Damaged 03] Damaged and the Cobra Bijou Hunter
Ian Morson [William Falconer Mystery 03] Falconer and the Face of God (pdf)
Betsy 03 Undead and Unappreciated
Classic Traveller Book 03 Worlds and Adventures
Dragonlance Tales 03 Love and War # edited by Margaret Weis & Tracy Hickman
Maryjanice Davidson Queen Betsy 03 Undead And Unappreciated
Honor 03 Love And Honor Radclyffe

więcej podobnych podstron