摘要:C语言是自对齐的,32位以4字节对齐,64位以8字节对齐(1字节=8 bits)自对齐的好处:在一条指令内完成数据的取或者存的操作,使得内存访问更快;否则,如果一个变量跨机器字存储,那么要做两次或更多次的访问(先取存在前一个机器字的内容,再取存在后一个机器字的内容)。对齐要求:字符可以起始于任何字节...
阅读全文
摘要:函数调用入栈顺序在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令的地址,然后是函数的各个参数。再然后是函数中的局部变量。注意静态变量是不入栈的。Pascal语言中函数参数从左到右入栈的,C语言则从右至左。原因是Pascal语言不支持可变长参数,而C语言支持这种特色。通过栈堆分析可知,自左向...
阅读全文
摘要:ASCII8位,共256种状态。最早只在美国用,空格、标点符号、数字、大小写字母等,一直编到了第127号。后来,世界各地开始用,127号之后就用来表示其它国家的一些字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了255。从128 到255这一页的字符集被称“扩展字...
阅读全文
摘要:AX,可存放一般数据,而且可作为累加器使用;BX,可存放一般数据,而且可用来存放数据的指针(偏移地址),常常和DS寄存器连用;CX,可存放一般数据,而且可用来做计数器,常常将循环次数用它来存放;DX,可存放一般数据,而且可用来存放乘法运算产生的部分积,或用来存放输入输出的端口地址(指针);SP,用于...
阅读全文
摘要:第一阶段:没有内存抽象没有内存抽象对于内存的管理通常非常简单,除去操作系统所用的内存之外,全部给用户程序使用。或是在内存中多留一片区域给驱动程序使用,如图1所示。图1. 没有内存抽象时,对内存的使用第一种情况操作系统存于RAM中,放在内存的低地址,第二种情况操作系统存在于ROM中,存在内存的高地址,...
阅读全文
摘要:Little和Big指的是内存地址的大小,end指的是数据的末尾。Little-endian指内存地址低的地方存数据的末尾(即低字节)Big-endian指内存地址高的地方存数据的末尾(即高字节)例:0x1234要存放进从0x4000开始的内存中在Little-endian中内存地址存放内容0x40...
阅读全文
摘要:本质区别在于是否分配内存。int a; 在声明的时候就已经建立了存储空间,所以既是声明又是定义extern int a; a是在别的文件中定义的,所以这里仅是声明类中的变量只是声明而不是定义,只有在实例化以后才会分配内存。EnclosingClass jb; //声明jb = new Enclosi...
阅读全文
摘要:独立磁盘冗余阵列RAID(Redundant Arrays of Independant Disks),RAID有5层级RAID0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都无法使用。RAID0的另一种模式。即在N块硬盘上选择合理的带区来创建带区集。其原理就是将原先顺序写入的数据被分散到所...
阅读全文
摘要:赋值运算与拷贝运算的区别如果对象在申明之后进行赋值运算,我们称之为赋值运算。例如:class1 A("af"); class1 B;B=A;此时实际调用的类的缺省赋值函数B.operator=(A);如果对象在申明的同时马上进行初始化操作,则称之为拷贝运算。例如: class1 A("...
阅读全文