计算机系统
太难了
坤斤拷
握り信じたうたかたの影を
展开
-
《深入理解计算机系统》笔记 (0) 从hello.c到hello
#include <stdio.h>int main(){ printf("hello, world\n");}对于一个如上简单的hello world程序,在Linux环境+gcc下,其转化为可执行文件的历程大致如下:STEP 1: 预处理预处理器(cpp)根据以字符#开头的命令(directives),修改原始C程序。如hello.c中#inclu...原创 2019-03-20 01:20:21 · 373 阅读 · 0 评论 -
《深入理解计算机系统》笔记 (1) 信息的位与表示
基础知识位:位(bit)是电子计算机中最小的数据单位。每一位的状态只能是0或1。字节:1个字节(byte)由8个二进制位构成,是存储空间的基本计量单位,即最小的可寻址的存储器单位 ,。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。虚拟存储器:也称为内存(memory),可视为一个非常大的字节数组,每个字节都由一个唯一的数字来标识,称为地址(addr...原创 2019-03-22 23:50:33 · 617 阅读 · 0 评论 -
《深入理解计算机系统》笔记 (2) 整数
整型数据类型C语言支持多种整型数据类型。这些整型数据类型的典型取值范围大多是固定的,除了 long 之外:long 在 32 位机器上用 4 个字节表示,而在 64 位机器上用 8 个字节表示。C中典型整型数据的取值范围(32位机)C中典型整型数据的取值范围(64位机)无符号数编码对于长度为 w 的位向量(或表示为),只要把看作一个二进制表示的数,就是的无符号表示。二...原创 2019-06-07 19:27:21 · 408 阅读 · 0 评论 -
《深入理解计算机系统》笔记 (3) 浮点数
浮点表示是对形如的有理数进行编码,对于极大数和极小数的表示,以及实数运算的近似值运算来说非常有用。二进制小数要理解浮点数,首先需要考虑含有小数的二进制数字。一个任意进制的数,它的每一位都有一个权重,而这个权重与它的进制以及小数点的位置有关。对于二进制数,考虑一个形如的表示法(小数点位置在与之间),其中每一位的取值范围都为0和1,用公式来表示即是 ...原创 2019-04-03 13:53:03 · 2078 阅读 · 0 评论 -
《深入理解计算机系统》笔记 (4) AT&T汇编基本指令
汇编指令初步机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码,如00001001010101100110010000101011。用机器指令编写出来的程序执行效率高,没有多余的额外操作。但由于机器指令十分复杂,难以记忆,且不方便阅读和修改,容易产生错误,所以设计了汇编指令,通过一些能反映机器指令功能的单词或词组来代表该机器指令,而不再关心机器指令的具体二进制编码。与此同时,汇编...原创 2019-03-14 00:16:15 · 1465 阅读 · 0 评论 -
《深入理解计算机系统》Lab2 Datalab
/* * CS:APP Data Lab * * bits.c - Source file with your solutions to the Lab. * This is the file you will hand in to your instructor. * * WARNING: Do not include the <stdio.h>...原创 2019-04-01 22:08:02 · 934 阅读 · 0 评论 -
《深入理解计算机系统》Lab3 Bomblab
准备工作在终端中输入objdump -d bomb > bomb.asm,将bomb反汇编并保存到文件bomb.asm中,相较于在gdb中输入disassemble命令更便于阅读。080489e4 <main>: 80489e4: 55 push %ebp 80489e5: 89 e5 mov...原创 2019-04-23 01:08:10 · 2467 阅读 · 0 评论 -
《深入理解计算机系统》Lab4 Buflab
Level 0任务描述:Bufbomb中,运行了一个test()函数,在test()中又调用了一个getbuf(),我们的目标是,在执行getbuf()后,不再返回test(),而是返回到执行smoke()。首先看test()函数,函数调用了一个getbuf()函数。那么,getbuf()是个什么函数?通过对bufbomb进行反汇编处理,可以查看到getbuf()的汇编代码:...原创 2019-06-02 19:43:11 · 2126 阅读 · 0 评论 -
计算机系统讨论课(1) 数据在内存中的存储方式
#include <stdio.h>int main(){ char a[6] = {'H', 'N', 'U', 'e', 'r', '\0'}; char b[6] = {72, 78, 85, 101, 114, 0}; int c[2]={(101<<24)+(85<<16)+(78<<8)+(72), 114}...原创 2019-03-09 17:07:34 · 977 阅读 · 0 评论 -
计算机系统讨论课(2) gdb调试常用指令
预先准备编译:gcc –g file.c –o file(-g: 在生成可执行文件时加入源码信息,使得生成的可执行文件能够进行调试) 进入gdb调试:gdb –q file (-q: 不输出冗余信息) 退出gdb调试:(gdb) quit | qgdb常用命令值得一提的是,输入指令时按下一下tab,会自动补全指令;若有多个指令作为候选,再按一下tab,就会出现所有可供...原创 2019-03-20 19:12:28 · 309 阅读 · 0 评论 -
剖析Intel IA32架构下C语言及CPU浮点数机制
图片格式以及文字版本。剖析Intel IA32架构下C语言及CPU浮点数机制 Version 0.01哈尔滨工业大学 谢煜波(email: [email protected] 网址:http://purec.binghua.com)(QQ:13916830 哈工大紫丁香BBSID:iamxiaohan...转载 2019-04-13 18:25:14 · 1379 阅读 · 0 评论