首页 > 代码库 > 开窍小老虎,一步一个脚印之 初识汇编(二)
开窍小老虎,一步一个脚印之 初识汇编(二)
汇编语言,有三类指令组成:
1:汇编指令,机器码的助记符,有对应的机器码
2:伪指令:没有对应的机器码,由编译器执行,计算机并不执行
3:其他符号:如+ -等,由编译器识别,没有对应的机器码。
内存:
内存被分为若干个存储单元,一个存储单元存储8个bit,也就是一个byte。每个存储单元从0开始编号,如果一个存储器有128个存储单元,编号从0~127,他的容量是128个字节。现在我的内存是6G,=6*1024*1024个字节。这个编号可以看做是存储单元在存储器中的地址。就像一条街,每个房子都有门牌号码。
内存中,栈是一种具有特殊访问方式的存储空间。他的特殊性就在于最后进入这个空间的数据,先出去。cpu会有专门的方法操作栈中的数据——入栈和出栈。
堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
当我们的程序达到了一个特定的内存阀值,我们需要更多的堆空间的时候,GC(垃圾回收器)开始起作用。GC将停止所有正在运行的线程,找出在堆中存在的所有不再被主程序访问的对象,并删除它们。然后GC会重新组织堆中所有剩下的对象来节省空间,并调整栈和堆中所有与这些对象相关的指针。你肯定会想到这个过程非常耗费性能,所以这时你就会知道为什么我们需要如此重视栈和堆里有些什么,特别是在需要编写高性能的代码时。
关于堆栈的更详细的知识,参考http://www.cppblog.com/oosky/archive/2006/01/21/2958.html
cpu要从内存中读取数据,首先要指定存储单元的地址。CPU在读写数据时还要表明,他要对计算器的哪一个部件进行操作,进行哪些操作,是从中读取数据,还是向里面写入数据。
可见,CPU,要进行数据的读写,必须和外部芯片进行下面3类的信息的交互。
1:存储单元的地址
2:器件的选择,读或者写的命令
3:读或者写的数据。
开窍小老虎,一步一个脚印之 初识汇编(二)