汇编语言之基础(一)

如果想了解计算机做了什么一定要学习汇编

  1. 汇编语言:

    对CPU的指令操作用代码形式展现,是对二进制码的封装,低级语言

    因为直接对二进制码编程十分不易编写和易读,所以把一些指令封装转换为汇编语言

    在机器码里面的 00001就是汇编里面的add

  2. 汇编语言的层次

  3. 寄存器

    CPU是最终执行操作的核心控制器,现代计算器,一般是CPU控制南桥芯片和RAM进行通信

    CPU执行速度很快,内存执行相对较慢,那么为了不让CPU闲置,引入CPU 一级缓存、CPU 二级缓存。作用就是CPU可以直接向缓存中读取数据,不需要和内存交互。缓存的空间小于内存,但是速度快于内存。CPU查找数据会先向缓存查找,没有再向内存查找,然后把内存相关数据放到缓存中,方便之后对这块数据的访问能通过缓存i直接访问

    虽然有了缓存,但是还是不快,又有了寄存器,寄存器用来存储最常用的数据,变量之类的值,寄存器 CPU缓存都是数据CPU内部的

    寄存器不依赖地址,依赖名称,我们直接告诉CPU去某一个地方取数据,这样是最快的

  4. 寄存器有很多种

    • EAX
    • EBX
    • ECX
    • EDX
    • EDI
    • ESI
    • EBP
    • ESP

    ESP被用来保存当前Stack的地址

    我们常常看到 32位 CPU、64位 CPU 这样的名称,其实指的就是寄存器的大小。32 位 CPU 的寄存器大小就是4个字节

  5. 内存模型

    我们大多数要指挥内存和寄存器进行数据交换操作

    程序运行时操作系统会给程序分配一块空间用来执行,存储数据和产生数据

    好比0x1000 - 0x8000,起始时0x1000,结束地址是0x8000

    对于堆申请,从低地址+ 向高地址方向分配

    栈帧创建,从高地址向下,高地址-的形式进行

    我们创建main函数,调用函数就是不断创建栈帧

等到函数结束就会到最初运行的地方,也就是局部的效果

6.上面说了汇编语言就是对机器二进制的封装

那么不同的CPU就会有不同的机器语言,ARM inter AMD
如果想了解计算机做了什么一定要学习汇编
参考 : Linux内核注释

posted @ 2020-12-08 22:41  make_wheels  阅读(182)  评论(0编辑  收藏  举报