网站域名space,深圳公司网站设计公司,官方网站建设的目标,厦门市建设安全管理协会网站本篇文章主要介绍处理器中存储器#xff1a;ROM和RAM以及数据在内存中的存储顺序#xff1a;大/小端(Little/Big Endian)。只读存储器(ROM)ROM(Read Only Memory)用来存储和保存数据。ROM数据不能随意更新#xff0c;但是在任何时候都可以读取。即使是断电#xff0c;ROM也…本篇文章主要介绍处理器中存储器ROM和RAM以及数据在内存中的存储顺序大/小端(Little/Big Endian)。只读存储器(ROM)ROM(Read Only Memory)用来存储和保存数据。ROM数据不能随意更新但是在任何时候都可以读取。即使是断电ROM也能够保留数据。此内存主要用来放置使用者所开发之程序eg. Biosboot而其性质乃属于不常更动或永不变动之资料微控制器之动作便是依据储存于此区之程序指令运作。ROM有很多种例如PROMEPROMEEPROM具体可百度。随机存取存储器(RAM)RAM(Read-Write Memory)亦称为读/写内存,是与CPU直接交换数据的内部存储器也叫内存。它可以随时读写而且速度很快通常作为操作系统或其他正在运行中的程序的临时数据存储媒介, 当电源关闭时RAM不能保留数据。RAM 可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类。静态RAM(Static RAM/SRAM):SRAM速度非常快不需要刷新电路即能保存数据是目前读写最快的存储设备了但是集成度较低多用于CPU的一级缓存二级缓存(L1/L2 Cache)动态RAM(Dynamic RAM/DRAM)DRAM保留数据的时间很短(需要内存刷新电路每隔一段时间刷新充电一次否则数据会消失)速度也比SRAM慢不过它还是比任何的ROM都要快.若其地址总线位32位则RAM大小为2^32bits。大/小端模式存储器中对数据的存储是以字节Byte为基本单位的因此字Word和半字Half-Word在存储器中就有两种次序分别称为大端模式Big Endian和小端模式Little Endian。大段模式低地址存放高字节数据。小端模式低地址存放低字节数据。例如一个 int 型变量中存放一个数值是 0x12345678的数据大端模式小端模式一般地ARM处理器均默认为小端模式。知道了大小端模式的概念怎样用C语言写段代码判断一个CPU是大端模式还是小端模式应当如何做呢 要用C语言实现就要用到联合体union。联合体union中的存放顺序是所有成员都从低地址开始存放利用该特性可获得处理器对内存采用Little Endian还是Big Endian模式的读写。采用union来判断具体代码如下int CheckEndian(void){union check{int word;char half;} Endian;Endian.Word1;if(1 Endian.half)return Little_Endian;else return Big_Endian;
}另外关于共用体与结构体结构体和共用体的区别在于结构体的各个成员会占用不同的内存互相之间没有影响而共用体的所有成员占用同一段内存修改一个成员会影响其余所有成员。结构体占用的内存大于等于所有成员占用的内存的总和成员之间可能会存在缝隙共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术同一时刻只能保存一个成员的值如果对新的成员赋值就会把原来成员的值覆盖掉。