手记

初识内存中的数据——由浅入深理解程序的底层实现原理(一)

引言:要想成为一名合格的开发者,掌握计算机系统工作原理是必须的,而在学这些之前应具有一门编程语言(汇编最好)的基础和一些计算机底层基础。本篇,我将从零开始一步步地探究高级语言底层逻辑和实现原理,希望对喜欢钻研的小伙伴们有所帮助。

一些数据类型的存储简单实现

注意,C语法在底层的具体实现并不是这样,很多较为复杂的机制细节以后逐步介绍。

字符型

所有字符型数据的存储大小为1个字节,例如,用C语法定义一个字符变量

char c1=‘A’;

在内存中定义一个字符变量可用以下汇编语法实现

c2 BYTE ‘a’

整数型

通常这一类型数据的存储大小与系统CPU操作位数有关,64位系统中,一般short型占2字节;int型占4字节;long型占8字节,在该环境下

short val1;
int   val2=1024;
long  val3=999999;

而在底层,可以这样建立这些变量

val1 WORD  ?
val2 DWORD 1024
val3 QWORD 999999

指针型

什么,这里就到指针了?先不要慌,指针在底层中没那么复杂,这里只要知道它是数据的内存地址就行了。在同一个系统中,数据的内存地址存储大小是固定的,32位系统中为4字节,64位系统实际为6字节但编译器一般默认8字节。定义指针

int *p; //C语言定义一个整型指针

pr1 DWORD ? ;指定一个可存放32位地址的变量(内存地址空间)

pr2 QWORD ? ;指定一个可存放64位地址的变量(内存地址空间)

梳理总结

  • 事实上,各数据类型的实现都依赖于系统内部数据类型(BYTE、WORD等),它们可存放存储大小一样的各种数据,也就是说对于内存中的数据,CPU只按内部数据类型的存储大小去访问。
  • 我们所认识的各种各样的数据,源于人们对基本数据进行各种不同的操作处理。
  • 内存中每个内存单元都对应一个唯一的内存地址,一个内存地址可指定任意一个数据,当这个数据存储空间大于内存单元时则会占用其他单元。
0人推荐
随时随地看视频
慕课网APP