首页 > 代码库 > 1.基础知识
1.基础知识
微机原理与接口:PC机和CPU物理结构和编程结构
组成原理:计算机的结构,功能,性能的研究
汇编语言:利用硬件系统的编程结构和指令集有效灵活的控制系统
汇编语言(助记符)
就像产品经理提到的用户体验,设汇编程序猿为用户,我们发现机器指令太长怎么办?创建助记符,在代码提交时根据助记符转换为机器码,这种解决方案有2个工作要做,1是机器码与助记符的关系要提前设置好,2是要提供api...做为一种跨时代的解决方案,助记符与机器码的关系映射并不需要程序猿去完成(爽,不过换句话说,自定义什么的是别想了),而且感觉如果助记符都相同的话,传说中的跨平台就已经完成了,想想就很兴奋,遗憾的是硬件提供的功能(机器码),还真不是那么好统一的,总而言之,可以认为一套cpu就有一套不同的助记符,只不过简单的功能都被遵守了(看起来像xxx规范,但是没找到),就这跨平台接着说,只要在包装一种语言,他在底层能区分cpu的话,将他的语法转换成cpu对应的汇编在转换成机器码好像就可以了....
总之汇编语言就这么形成了,他有一下3种指令
(1).汇编指令:机器码助记符,对应机器码
(2).伪指令:由编译器执行(理解),无对应机器码
(3).其他符号:+-*/
存储器和寄存器
有了助记符就能写实现了,说到实现,做为bi端的屌丝,我的第一个问题就是数据从哪来,模型是否支持(数据库里根本就没有需求需要实现功能所需要的数据太正常了),顺便吐槽下,bi端的屌丝权限非常低,比如不能使用配置文件(架构组管理,架构组不提供bi的端配置文件),不能创建数据表(模型组管理,模型不支持想办法)...假设一定要使用配置文件,需要新立个需求,创建ui界面,然后将配置写入数据库...
存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据,比如硬盘,内存
就像我们的项目,数据来自数据库中,也可以来自资源文件,但就像我们不能访问资源文件一样,cpu也不能访问硬盘,我们只能访问数据库,cpu需要访问内获取数据,我们获取的数据必须放到模型中(bean),cup操作数据也必须放到寄存器中(尽管原因不一样,也没啥关系,但就是想让我吐个槽)
存储单元:存储单元==字节
CPU对内存的读写
就像cpu只识别0/1,访问内存所做的事情也就2件,读/写,相对的,进行读操作需要知道那个存储单元以及读取到的数据,而写则需要知道将什么数据,放到那个但愿,这些传输必须通过硬件支持,就像我们封装好的方法一下,内部如何调用就不用去管了,反正会有3个变量
存储单元的地址(地址信息)
读或写的数据(数据信息)
读/写命名(控制信息)32
地址总线大小(多少),即CPU可管理的范围,比如32位地址信息,他的地址信息"类型"(数据库中的类型)是32位,位是0/1,他所能代表的范围就是32个1打满的二进制+1即2的32次方
数据总线大小,即一次传输能力的大小(太小了多传几次,太大了高位传0,或者说控制总线总线根本不会去读取高位)
控制总线大小,即处理能力的大小,1根控制总线只提供读/取,显然没问提,但如果封装一些固定逻辑,即可以极大的减少数据传输的次数
由此总结,cpu可支配的内存大小与地址总线相关,一次传输的大小与数据总线相关,而具体要传输多少次,则跟控制总线相关...(有木有感觉控制总线又跟机器码/助记符相关)
内存地址空间
cpu需要通过地址的唯一id进行内存(数据)的访问,如果内存分多块怎么办?我是不知道怎么处理的,看起来IBM大叔再次将他封装给硬件,这样我们使用的就只能称之为统一的内存模型,他的地址与内存条上的地址可能并不一样,但绝对是唯一的,至于其具体的范围关系..Who cares.
1.基础知识