开窍小老虎,一步一个脚印之 初识汇编(二)

  汇编语言,有三类指令组成:

    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:读或者写的数据。

    

  

posted @ 2014-09-29 23:43  求真知  阅读(236)  评论(0编辑  收藏  举报