000-计算机推理
2023-07-06 15:29:53 1 举报
计算机基础知识
作者其他创作
大纲/内容
数论
晶体管
传递参数时,将会优先使用寄存器来传递参数,寄存器不够用时,使用栈来传递参数。直接写入函数调用时的参数,将会作为立即数(指令的操作数)放入指令中
RISK(ARM)
C语言
009-栈内存-内存布局
程序
1878出8086和80881982出2861985出3861989出486奔腾
定义/识别单词
GDTR
语义分析
高32位:表内存首地址低16位 表:的长度
编译后汇编代码
特权级
中间语言称之为RTL
通用寄存器
更小的单元,更多的逻辑,更高的性能,更低的损耗。
使用基础数据类型,数组,结构体来封装内存单元的操作
graalvm
因为所有的代码和数据(内核和应用程序)的段基址为0,而指令地址寄存器又是32位,那么:段描述符的base+指令地址寄存器=0+指令地址寄存器-》正好能访问所有4G(因为4kb*2^16)-》linux中没有使用分段机制(为什么提倡这样设计?因为手册里写了Intel CPU必须要经过分段)
解释器
分页
存储器
SRAM
电压电流(电气特性)
002-汇编器-》机器码-》cpu执行的推理过程
LLVM
由晶体管直接实现,成本很高,一般用于cpu内的高速缓存
数据结构
003-CISC指令集和RISC指令集
CISC(Intel)
AT&T
屏蔽CPU底层处理,面向更符合人类的编程方式进行编程,而不是需要详细了解CPU的构建和计算机组成原理与体系结构(抽象汇编语言对cpu和内存的操作,最纯粹的汇编抽象,自身并没有扩展语言自己的特殊属性)
windows
段寄存器(段选择子)
DRAM
多个指令流私有的数据,由于数据结构中的栈的特性是先进后出,这就意味着,栈顶的内存就是当前正在执行的代码段
地址
中间结果
地址转换
栈内存
启动速度快,执行速度慢
语法树
新的东西出来,必定需要满足:已存在的东西的所有功能,且需要增加自己的新特新。这样才具备竞争力。所以研究新的东西时,可以基于现有的东西的了解 程度+新特新 来学习和选型
图灵机模型
内存
用.section来描述节信息:.rodata.data来表示数据段.text来表示代码段
用global来表示全局的符号(符号名+类型)包含:变量和函数
006-编译原理-LLVM介绍
一切语言的特性均面向编译器来设计和编写
当前指令要完成什么样的操作
每个指令流都有自己的栈桢,栈桢里存有当前指令流的操作的数据,当使用call指令转移指令流以后,那么只需要保存上一个指令流的栈底位置即可
当前指令参与操作的东西(寄存器?内存中的值)
019-奔腾处理器-寄存器数量和命名
013-汇编的形式
I-Cache
023-C语言-指令调用过程
静态链接
Intel
汇编器
025-C语言-sizeof和strlen
地址总线
高速缓存
计算机编程语言的本质是什么?对下一级语言的高度抽象
CPLCurrent Privilege Level
栈
ELF
汇编语言
CPU
D-Cache
分级缓存
控制了cpu就等于控制了计算机
GCC
中间产物
类型
DPLDescriptor Privilege Level
sizeof是编译期,由编译器进行语法分析的时候得出来的结果值,不生成任何机器指令
生成目标语言
001-众多语言和框架始于底层
寄存器
sizeof
内存管理
16位段寄存器
编译器
cs和ss低两位(在此上下文中,这个RPL称之为CPL,所以CPL是RPL在CPU处理段的上下文中的一个特例,CPU会将其视为当前程序的执行特权级)
堆内存
004-如何创造一门新语言,编译原理解释,存储器介绍
冯诺依曼体系
操作码
专用寄存器
022-C语言-两个指令段如何操作同一个内存地址
触发器
一个先进后出的结构
一切组件均可单独独立出来使用,全部流程均可使用插件机制来进行配置选择,全部模块化。--》高度定制化--》开源后,所有的语言均可按照模块化机制插入,目的:统一编译器江湖
连续内存
由电容直接实现,成本相对低,一般用内存
表示信息的最小单元
024-C语言-指针
Intel平台
单词流
计算机硬件
硬盘
020-奔腾处理器-DI寄存器和SI寄存器
1.可重定向文件 .o:静态链接库,每个程序包含相同代码和数据2.动态链接库 .so:共享代码,独立数据3.可执行文件 .out:操作系统加载,根据elf信息创建进程并执行:_start、libc_start_main、.int、main、.fina
012-计算机组成(总线)
数据总线
linux
段描述符(GDT Item)
unix
内存分段
编译原理
JIT(即时编译器)
指针
某个语言怎么变成另一个语言
017-奔腾处理器-CPU的node和chip
1.修饰全局变量(变量私有)2.修饰局部变量(改变局部变量的代码栈上存储,改成了数据段存储.data)3.修饰函数(函数文件私有)
语法分析
Intel历史
glibc函数库(CRT运行时库)
与计算机体系结构挂钩,研究计算机的硬件之间的组合的交互能力
011-学习Intel的由来
计算机体系
为了保护操作系统,引入特权级概念,R0-R3,4个特权级,os只使用0-3
018-奔腾处理器-MESI协议
操作系统
栈桢
多种实现方式
1.malloc(映射分配(适合大内存),使用edata指针(适合小内存分配))2.free函数释放分配内存
数据内存
算法
005-编译原理-gralvmm介绍
实现了编译原理的前端和后端,只不过在内存中动态对语言进行编译
字符串以\\0结尾
C语言中,字符串以连续空间存储,必须要知道哪里结束,所以用\\0来表示字符串的结尾
编码规则
保存程序的指令流
ebpf
流水线
给定输入,按照定义和限制给我输出
速度快(对源代码进行了高度优化),但是启动速度慢,因为需要花费大量的时间对源代码进行编译
Head.s
+
010-程序的内存布局-操作系统
数字逻辑
物理(电学)
编译时,需要消耗:时间和空间hotspot就是热点虚拟机
RPLRequest Privilege Level
malloc、calloc(malloc+memset 0)、realloc(重分配)
词法分析
021-C语言
016-奔腾处理器-流水线
static
动态链接
前端
外设
不连续内存
用一门语言,对其他语言,进行解释,执行逻辑
Intel手册
007-编译原理(编译器,汇编器,解释器,JIT的解释)
计算机组成原理
识别每个单词的词性和意思
使用eax来保存函数返回值
编译器的一种
控制总线
逻辑门
ROM
定义语法
描述存储数据的结构
代码段内存
028-C语言-编译总结
指令
锁存器
总线
基于跨平台的Hotspot JVM上层的中间IR语言--字节码,将各类语言都可以在jvm上进行执行,可以享有jvm的高性能,GC,跨平台等等特性目的:统一虚拟机世界
分析优化
基础语法
语法结构
控制器
1.保存一个地址值指向数据内存的起始地址2.指针的类型用于告诉编译器如何解释指向的数据内存中的数据
015-段描述符-保护模式
014-栈桢-段寄存器
由一组代码组成(指令流组成)
008-寄存器-内存
027-C语言-链接
采用16进制编码地址信息
操作数
16位指令地址寄存器
共64位,包含段基地址,段长,访问信息,状态
026-C语言-结构体/运行时函数库/文件的链接
编码信息,编码单词,规定单词出现的地方
多个指令流共享的数据
第一代操作系统使用ISA写的
指令级架构(ISA指令集)
运算器
后端
保存程序数据(编译时就存在的数据,静态数据)例如:public static final int a = 1;
虚拟地址:程序看到的地址线性地址:分段(linux不用)物理地址:分页(可以没有)
数据结构定义了数据存放的形式,算法实现了操作这些数据的动作。两者相辅相成,缺一不可
实现了编译原理的前端和后端的整套,将一个语言(源语言)编译为目标语言
0 条评论
下一页