
计算机基础
文章平均质量分 66
zhc_24
这个作者很懒,什么都没留下…
展开
-
程序编译-汇编-链接的理解!
写在前面:对于程序编译汇编链接过程的理解。 涉及到程序的重定位,虚拟内存,静态链接,动态链接的概念的理解。早期程序员采用的是机器语言的编写程序。非常的麻烦。 后来采用汇编语言编写,将一些操作采用符号的方式,用符号的方式表示一些操作和跳转的位置。 无需在写程序的时候知道具体要跳转的位置,用符号表示就可以。 在链接时在对应的符号的引用处填入定义的地址!! 确定符号引用关系也就是符号的解析!原创 2017-12-17 15:36:18 · 1328 阅读 · 0 评论 -
值语义,引用语义对比理解
写在前面 值语义,引用语义主要内容值语义和引用语义的复合代表就是c++。 值语义(value sematics)指的是对象的拷贝与原对象无关,就像拷贝 int 一样。C++ 的内置类型(bool/int/double/char)都是值语义,标准库里的 complex<> 、pair<>、vector<>、map<&am原创 2018-08-29 00:41:13 · 2707 阅读 · 0 评论 -
Sublime Text配置python解释器
参考Sublime Text如何运行Python文件点击菜单栏中的Tools —> Build System —> New Build System将如下内容复制到 sublime_build中,替换原有的{ "env": { "PATH":"C:/Python36/python.exe;%PATH%" }, "shell_cm...原创 2018-08-21 15:55:19 · 1919 阅读 · 0 评论 -
异常
写在前面 异常处理机制异常处理 什么是异常异常(Exception)是程序在运行时可能出现的会导致程序运行终止的错误。这种错误是不能通过编译系统检查出来的。常见的异常如下:系统资源不足。例如,内存不足,不可以动态申请内存空间;磁盘空间不足,不能打开新的输出文件等。用户操作错误导致运算关系不正确。例如,出现分母为0。数学运算溢出,数组越界,参数类型不能转换等。...原创 2018-08-26 14:55:40 · 254 阅读 · 0 评论 -
计算机组成
计算机的组成分为三大类:中央处理器CPU 主存储器 输入输出子系统。CPU三部分组成: 算术逻辑单元ALU:进行逻辑移位算术运算。控制单元寄存器组:快速存储单元:用于临时存放数据的高速独立的存储单元。数据寄存器:存储输入的数据和运算结果。指令寄存器:存储从内存当中读取的指令。程序计数器:保存当前正在执行的指令,当前指令执行完毕之后计数器自动加1指向下一条指令在内存当中的地址。...原创 2018-07-24 13:38:33 · 503 阅读 · 0 评论 -
函数栈到底是怎么工作的?
参考https://blog.youkuaiyun.com/amghost/article/details/38053101 一些细节局部变量是存储在堆栈中的:函数当中的局部变量参数都是在函数栈上的局部变量,main 函数当中的局部变量都是在main函数栈上的。在intel x86的系统中,堆栈在内存中是从高地址向低地址扩展:栈顶是栈当中地址最低的地方。在32位系统中,堆栈每个...原创 2018-07-24 13:30:07 · 2820 阅读 · 1 评论 -
虚拟存储器
虚拟存储器一个系统中的进程是与其他的进程共享CPU和主存资源。如果某个进程不小心的写了另一个进程使用的存储器,它可能以某种==完全和逻辑无关==的令人迷惑的方式失败。为了更有效的管理存储器,对于主存进行抽象 叫做虚拟存储器。虚拟存储器的三个重要的能力: 将主存看作是磁盘上地址空间的高速缓存,在主存当中只保存活动区域,根据需要在磁盘和主存之间传输数据,高效使用主存。为每个进程提供一致...原创 2018-07-24 13:26:17 · 346 阅读 · 0 评论 -
系统I/O
系统级I/O输入输出是在主存和外部设备之间的拷贝数据的过程。外部设备如磁盘,终端,网络等等输入是从I/o设备拷贝数据到主存输出是从主存拷贝数据到I/O设备所有语言的运行时系统都提供执行I/O的较高级的工具。 C语言提供的标准的I/O库:printf scanf这样的带缓冲区的I/O函数c++重载操作符<< 输入>> 输出提供类似的功能UNIX系...原创 2018-06-26 15:06:04 · 630 阅读 · 0 评论 -
网络编程理解
网络编程认识到客户端和服务器是进程不是机器或者主机是很重要的。客户端和服务器运行在不同的主机上,通过计算机网络的硬件和软件资源来通信。对于一个主机而言,网络只是一种I/O设备作为数据源和数据接收方。一个插到I/O总线的扩展槽的适配器提供了网络的物理接口物理上网络是一个按照地理远近组成的层次系统。==集线器==不加分辨得从一个端口上收到的每个位==复制==到其他的所有端口上。每个主...原创 2018-06-26 13:40:18 · 496 阅读 · 0 评论 -
并发编程理解
现代操作系统提供三种基本的构造并发的方法 进程I/O多路复用线程基于进程的并发服务器==逻辑流在时间上是重叠的,那么他们就是并发的==每个流使用了单独的进程,内核会自动的调度每个进程。在父进程当中接受客户端的请求,然后创建一个新的子进程为每个客户端提供服务。简单,来说:服务器监听描述符3上的请求。如果客户端发出请求,那么服务器返回一个已连接的描述符4.在...原创 2018-06-25 15:32:31 · 219 阅读 · 0 评论 -
注意点01-对于指针的参数传递
#include <iostream>void GetMemeory(char *p){ p = (char *)malloc(100);}void Test(){ char *str = NULL; GetMemeory(str); strcpy(str, "Thunder"); strcat(str + 2, "Downloader");原创 2018-01-02 21:45:26 · 156 阅读 · 0 评论 -
深入理解计算机系统—优化程序性能
写在前面:这部分主要是对于怎样优化程序部分的笔记和理解。优化 的主要的方式:选择合适的算法和数据结构编写编译器能够有效优化的代码对于运算量特别大的任务可以分成多个部分,多核多处理器的并行计算。线程并行计算。就是实现代码的简单性和速度的权衡。具体的步骤: 1. 消除程序内不必要的内容 2. 利用处理器提供的指令级并行能力代码剖析程序:测量程序各个部分性能的工具,分析代码证=中低效的地方原创 2018-01-02 20:32:24 · 594 阅读 · 0 评论 -
程序编译-汇编-链接的理解04-可执行文件概述
写在前面:这一节主要是对于可执行目标文件格式的理解。内容:与可重定位文件稍有不同: 1.在ELF头字段给出执行程序时第一条指令的地址,在可重定位的文件中则为0 因为可重定位文件不会被执行,所以不会给出执行代码的地址 2.多了一个程序头表,也称段头表 是一个结构数组,因为可执行文件是为了装入到存储器执行的, 程序头表就说明了这些节和段的对应关系,有些节是要装入内存当中有些不用。 3.多了一个原创 2017-12-18 15:21:31 · 305 阅读 · 0 评论 -
程序编译-汇编-链接的理解!—03-ELF头和节头表
写在前面:这一节主要对于ELF头以及节头表进行理解。ELF头ARM的可执行文件的格式是ELF格式文件 文件的开头的几个字节通常用来确定文件的格式 这个叫做魔数。 ELF头一共占52个字节 头信息举例: Linux 里专门的软件去解析ELF头 $readelf -h 这样就将ELF头的01序列解析出来。 45H 4cH 46 分别是大写的E L F的ASCII码 头文件的最先的原创 2017-12-18 11:27:05 · 791 阅读 · 0 评论 -
程序编译-汇编-链接的理解02-可重定位目标文件具体包含的信息!
.bss 未初始化的变量其实就相当于占位符。 仅在节头表里说明这一节需要多少的空间,在磁盘里并不分配任何空间。 C语言规定,未初始化的全局变量和局部静态变量的初始值为0 所以不需要为其分配任何空间。 .data 已经初始化的变量中存放具体的初始值,需要占磁盘空间。 BSS Block Started by Symbol 用于为符号预留空间 ELF头显示节头表的位置 通过其就可原创 2017-12-18 10:56:43 · 399 阅读 · 0 评论 -
telnet 使用
Windows 默认是关闭Telnet服务的,打开的话需要通过控制面板打开这里有个打开控制面板的快捷方式:Windows 上查看Telnet命令参数帮助的方式原创 2018-10-10 08:46:32 · 968 阅读 · 0 评论