一:
二:认识CPU
超大规模集成电路
执行各种计算机指令的逻辑机器
三:计算机指令
本质是一种机器语言
Intel架构的cpu和arm架构的cpu计算机指令集不同
高级语言——》汇编语言——》机器语言
汇编语言就是给程序员看的机器码,add,mov
指令的分类:
算术类指令 add
逻辑类指令 or
数据传输类 load word
条件分支类 branch on equal
无条件跳转类 jump
CPU内部寄存器
PC寄存器:存放下一条需要执行的计算机指令的内存地址
指令寄存器:用来存放当前正在执行的指令
条件码寄存器:用里边的一个一个标记位,存放cpu计算的结果
cpu运行程序的过程
cpu从PC寄存器中取地址,找到地址对应的内存位子,取出其中指令送入指令寄存器执行,然后指令自增,重复操作。
所以只要程序在内存中是连续存储的,就会顺序执行;
而实际上跳转指令就是当前指令修改了当前PC寄存器中所保存的下一 条指令的地址,从而实现了跳转。
当然各个寄存器实际上是由数电中的一个一个门电路。
编译——》汇编——》机器码
stack overflow
Java的跨平台运行是如何做到的
Java是通过实现不同平台上的虚拟机,然后即时翻译javac生成的中间代码来做到跨平台的。
跨平台的工作被虚拟机开发人员来解决了
程序运行核心
链接器
把多个文件合并成一个可执行文件
装载器
解析ELF或者PE格式的可执行文件,把对应的指令和数据加载到内存,让CPU执行
内存地址
虚拟内存地址:
指令中用到的地址
物理内存地址:
硬件中的内存空间地址
关系建立:
映射表维护着物理地址到虚拟地址的映射关系,因为是连续的内存空间
所以只需要维护起始地址和对应空间大小
静态链接与动态链接
静态链接:
符号表和重定向
绝对地址空间
动态链接:
相对地址空间