计算机系统
系统级相关知识
AndyZzz~
这个作者很懒,什么都没留下…
展开
-
对大端法和小端法存储数据的一些理解
直入正题吧~所谓大端法,就是指数据的高字节放在低地址所谓小端法,就是指数据的低字节放在低地址一般,Linux和Windows采用的是小端法表示,Sun是大端法表示。这两种表示其实没区别,但不知道为什么人们总是为之争得面红耳赤…现在来做个实验,在Linux64平台和Windows64平台检验其小端性:测试代码:#include <iostream>#include <stdio.h>using namespace std;typedef unsigned char*原创 2020-08-10 09:40:09 · 754 阅读 · 0 评论 -
公式计算告诉你:新买来的硬盘容量为何“少”了
买了台笔记本,商家标签这么写的:而买回来之后,一打开:妈耶,怎么少了这么多,要知道一寸SSD一寸金呐…有很多解释会说系统里面有预配置,占据了部分空间????这种解释实际上是不合理的。实际上,造成这种现象的原因是:我们想的GB和产商说的GB,衡量计算的标准不一样。打个比方,我们买了个1T的硬盘,1T = 1024GB = 10242MB = 10243KB =10244B,也就是240次方个byte(字节),这是我们的想法。但是,在产商那里,1T = 1000GB = 10002MB =原创 2020-06-24 14:12:08 · 1038 阅读 · 0 评论 -
浮点数相加实例
浮点数运算还是以了解为主~直接先来看一个例子:规定浮点数的符号位为1位,指数位为3位,尾数位为4位,现有两个浮点数:1.25和13.51.25浮点数表示为二进制格式:0 011 010013.5浮点数表示为二进制格式:0 110 1011小小验算一下:0 011 0100表示一个正数,指数位为3(偏置bisas=3),故实际exp为0,1.0100 * 2<sup>0</sup> = 1.250 110 1011表示一个正数,指数位为6,减去偏置得到实际exp=3,1.原创 2020-09-03 09:34:05 · 5560 阅读 · 5 评论 -
计算机组成原理之Cache-主存地址映射
一、直接映射每个主存块只与一个缓存块相对应,映射关系式为: i = j mod C 或 i = j mod 2 C其中,i为缓存块号,j为主存块号,C为缓冲块数。映射过程:主存地址高m位被分成了两部分:低c位指代Cache的字块地址,高t位指代主存字块标记。当缓存接到CPU送来的主存地址后,只需根据中间c位字段找到对应的Cache块,然后根据Cache块中的“标记”是否与主存地址的高t位相符来判断,若符合且有效位为1,表明Cache块已和主存的某块建立了对应关系,可根据b位地址从Cache中获取信息原创 2020-08-29 15:58:22 · 4433 阅读 · 1 评论 -
IEEE 754 float浮点数浅析
IEEE 754标准出现之前,业界对机器浮点数表示各有一套说法,这就造成了浮点代码在机器间的移植性表现极差。IEEE规定了通用机器浮点数标准,今天几乎所有计算机都支持IEEE 754,且默认使用的浮点数标准就是IEEE 754。关于浮点数应具备的基本常识,课本上讲的也稍微枯燥,自己理解起来不容易。希望此篇通俗易懂的简要介绍,能使你对IEEE 754浮点数知识体系有深刻的认识。一、为什么使用浮点数?浮点数的概念是相对于定点数而出现的。定点数是指小数点固定的数,包括无符号整数,有符号整数,定点小数。举几.原创 2020-08-16 21:23:14 · 4845 阅读 · 3 评论 -
Shell脚本编程
引言:Shell是一个用C语言编写的程序,通过Shell用户可以访问操作系统内核服务,类似于DOS下的command和后来的cmd.exe。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量、参数、函数、流程控制等等。它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。一、Shell变量1. 命名规则:注意变量名与等号之间不可以有空格,其他命名规范同C语言赋值示例:a=1.原创 2020-08-10 22:11:01 · 142 阅读 · 0 评论 -
暑期集训——计算机系统级之 x86常见指令
1、整数寄存器2、操作数格式3、指令:(1)数据传送指令:(2)压栈弹栈:(3)算术逻辑运算:(4)比较和测试指令:(5)set指令:(6)跳转指令:(7)条件传送指令:(8)过程调用:...原创 2020-07-15 00:10:22 · 242 阅读 · 0 评论 -
暑假集训——计算机系统级之链接
暑假集训——计算机系统级之链接链接器把程序的各个代码和数据片段收集并联合成一个文件,处理器将这个文件加载到内存,并且执行它。链接可以在编译时、加载时、运行时。本文概括总结了链接各方面的全面讨论。从传统静态链接到加载时的共享库的动态链接,以及到运行时的共享库的动态链接。一、编译器驱动程序1、编译器驱动程序(complier driver):指的是用户在需要时调用的语言预处理器、编译器、汇编器和链接器。2、Linux命令:从编写的c/cpp文件,到最终可以在计算机上运行的文件,这中间需要经历几个原创 2020-07-06 16:37:54 · 167 阅读 · 0 评论 -
Linux gdb工具调试技巧
近期在完成卡内基梅隆大学著名的BombLab实验,这个实验需要对gdb工具有灵活的使用,gdb支持机器级程序运行时的评估和分析,今天咱们就此聊聊。参考:《深入理解计算机系统》(1)对于一个x86-64的程序,在命令行中输入:objdump xxx可以得到程序的反汇编版本(2)启动GDB:命令行输入gdb xxx即可进入程序调试模式。通常方法是在程序感兴趣的地方附近设置断点。程序在执行过程中遇到断点,会停下来,,将控制返回给用户。所以在断点处,我们可以查看各个寄存器和内存位置的内容。原创 2020-05-14 22:32:12 · 126 阅读 · 0 评论 -
计算机工作原理(摘自百度百科,有删改)
计算机的基本原理是存储程序和程序控制,预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地址去等步骤。*************************************************基本原理计算机在运行时,先从内存中取出第一条指令,通过译码器的选择,按指令的...原创 2019-06-24 23:35:43 · 875 阅读 · 0 评论