12 2020 档案

摘要:这是CSAPP的第四个实验,这个实验比较有意思,也比较难。通过这个实验我们可以更加熟悉GDB的使用和机器代码的栈和参数传递机制。 @ 实验目的 本实验要求在两个有着不同安全漏洞的程序上实现五种攻击。通过完成本实验达到: 深入理解当程序没有对缓冲区溢出做足够防范时,攻击者可能会如何利用这些安全漏洞。 阅读全文
posted @ 2020-12-31 09:35 学习,积累,成长 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:写程序最主要的目标就是使它在所有可能的情况下都正确工作。一个运行得很快但是给出错误结果的程序没有任何用处。程序员必须写出清晰简洁的代码,这样做不仅是为了自己能够看懂代码,也是为了在检査代码和今后需要修改代码时,其他人能够读懂和理解代码。另一方面,在很多情况下,让程序运行得快也是一个重要的考虑因素。本 阅读全文
posted @ 2020-12-31 09:33 学习,积累,成长 阅读(514) 评论(0) 推荐(0) 编辑
摘要:本次实验是CSAPP的第5个实验,这次实验主要是让我们熟悉如何优化程序,如何写出更具有效率的代码。通过这次实验,我们可以更好的理解计算机的工作原理,在以后编写代码时,具有能结合软硬件思考的能力。 @ 实验简介 本次实验主要处理优化内存密集型代码。图像处理提供了许多可以从优化中受益的功能示例。在本实验 阅读全文
posted @ 2020-12-31 09:33 学习,积累,成长 阅读(442) 评论(0) 推荐(0) 编辑
摘要:蠕虫病毒是一种常见的利用Unix系统中的缺点来进行攻击的病毒。缓冲区溢出一个常见的后果是:黑客利用函数调用过程中程序的返回地址,将存放这块地址的指针精准指向计算机中存放攻击代码的位置,造成程序异常中止。为了防止发生严重的后果,计算机会采用栈随机化,利用金丝雀值检查破坏栈,限制代码可执行区域等方法来尽 阅读全文
posted @ 2020-12-30 17:25 学习,积累,成长 阅读(491) 评论(0) 推荐(0) 编辑
摘要:uthash简介 由于C语言本身不存在哈希,但是当需要使用哈希表的时候自己构建哈希会异常复杂。因此,我们可以调用开源的第三方头文件,这只是一个头文件:uthash.h。我们需要做的就是将头文件复制到您的项目中,然后:#include "uthash.h"。由于uthash仅是头文件,因此没有可链接的 阅读全文
posted @ 2020-12-30 17:25 学习,积累,成长 阅读(11698) 评论(0) 推荐(3) 编辑
摘要:目录qsort函数原型compar参数int 数组排序结构体排序字符串指针数组排序字符串二维数组排序整型二维数组(力扣题目) qsort函数原型 void qsort( void *base, size_t nmemb, size_t size, int (*compar)(const void * 阅读全文
posted @ 2020-12-30 17:17 学习,积累,成长 阅读(1804) 评论(0) 推荐(0) 编辑
摘要:目录哈希表和哈希函数的概念哈希函数的构造直接定址法数字分析法平方取中法折叠法除留余数法(常用)随机数法哈希函数的选择处理冲突的方法开放定址法再哈希法链地址法建立一个公共溢出区代码实现 哈希表和哈希函数的概念 哈希表(散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它 阅读全文
posted @ 2020-12-30 17:14 学习,积累,成长 阅读(673) 评论(0) 推荐(0) 编辑
摘要:查找表的概念 查找表是由同一类型的数据元素构成的集合。例如电话号码簿和字典都可以看作是一张查找表。 在查找表中只做查找操作,而不改动表中数据元素,称此类查找表为静态查找表;反之,在查找表中做查找操作的同时进行插入数据或者删除数据的操作,称此类表为动态查找表。 顺序查找 顺序查找的查找过程为:从表中的 阅读全文
posted @ 2020-12-30 17:12 学习,积累,成长 阅读(669) 评论(0) 推荐(0) 编辑
摘要:如下图所示,这是一棵普通的树,该如何存储呢?通常,存储具有普通树结构数据的方法有 3 种: 双亲表示法; 孩子表示法; 孩子兄弟表示法; 图1 树的双亲表示法 双亲表示法采用顺序表(也就是数组)存储普通树,其实现的核心思想是:顺序存储各个节点的同时,给各节点附加一个记录其父节点位置的变量。 注意,根 阅读全文
posted @ 2020-12-30 17:12 学习,积累,成长 阅读(1995) 评论(1) 推荐(0) 编辑
摘要:线索二叉树的概念 当我们对普通的二叉树进行遍历时需要使用栈结构做重复性的操作。线索二叉树不需要如此,在遍历的同时,使用二叉树中空闲的内存空间记录某些结点的前趋和后继元素的位置(不是全部)。这样在算法后期需要遍历二叉树时,就可以利用保存的结点信息,提高了遍历的效率。使用这种方法构建的二叉树,即为“线索 阅读全文
posted @ 2020-12-30 17:06 学习,积累,成长 阅读(447) 评论(0) 推荐(0) 编辑
摘要:先序遍历 先序遍历规则 先序遍历的核心思想:1.访问根节点;2.访问当前节点的左子树;3.若当前节点无左子树,则访问当前节点的右子树;即考察到一个节点后,即刻输出该节点的值,并继续遍历其左右子树。(根左右) 先序遍历举例 如图所示,采用先序遍历访问这颗二叉树的详细过程为: 1.访问该二叉树的根节点, 阅读全文
posted @ 2020-12-29 17:00 学习,积累,成长 阅读(4465) 评论(0) 推荐(0) 编辑
摘要:@ 树的基本概念 图1 树的结点 结点:使用树结构存储的每一个数据元素都被称为“结点”。例如,上图1中,数据元素 1 就是一个结点; 父结点(双亲结点)、子结点和兄弟结点:对于上图1中的结点 1,2,3,4 来说,1 是 2,3,4 结点的父结点(也称为“双亲结点”),而 2,3,4 都是 1 结点 阅读全文
posted @ 2020-12-29 16:59 学习,积累,成长 阅读(540) 评论(0) 推荐(0) 编辑
摘要:在介绍矩阵的压缩存储前,我们需要明确一个概念:对于特殊矩阵,比如对称矩阵,稀疏矩阵,上(下)三角矩阵,在数据结构中相同的数据元素只存储一个。 三元组顺序表 稀疏矩阵由于其自身的稀疏特性,通过压缩可以大大节省稀疏矩阵的内存代价。具体操作是:将非零元素所在的行、列以及它的值构成一个三元组(i,j,v), 阅读全文
posted @ 2020-12-29 16:57 学习,积累,成长 阅读(959) 评论(1) 推荐(0) 编辑
摘要:在数据结构中,字符串要单独用一种存储结构来存储,称为串存储结构。这里的串指的就是字符串。无论学习哪种编程语言,操作最多的总是字符串。我们平常使用最多的存储结构无疑是利用定长数组存储。但是这种存储结构需要提前分配空间,当我们不知道字符串长度的时候,过大的分配内存无疑是一种浪费。因此,合理的选择字符串的 阅读全文
posted @ 2020-12-29 16:56 学习,积累,成长 阅读(2212) 评论(0) 推荐(0) 编辑
摘要:前段时间看到了同学转发的中兴通讯的比赛链接,之前也没有参加过算法类的比赛,这次打算报着试一试的态度参加下,增加下经验。在初步看了几个门派的题目简介后,发现只有傅里叶派比较适合自己,所以最终选择了傅里叶派。 @ 题目描述 在某片遥远的大陆上,居住着两个世代友好的部落,分别是部落A和部落B。他们一起耕耘 阅读全文
posted @ 2020-12-29 16:54 学习,积累,成长 阅读(164) 评论(0) 推荐(0) 编辑
摘要:uboot启动内核分析 进入cmd_bootm.c,找到对应的bootm命令对应的do_bootm(): int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { boot_os_fn *boot_fn; // 阅读全文
posted @ 2020-12-29 16:52 学习,积累,成长 阅读(257) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植linux3.4.2内核之内核框架介绍及简单修改我们简单配置了内核,这节来根据继续修改内核。 启动内核 内核启动的打印信息如下图所示 可以看到内核有8个分区,而我们的uboot只有4个分区。 0x00000000-0x00040000 : "bootloader" //存放u 阅读全文
posted @ 2020-12-29 16:49 学习,积累,成长 阅读(259) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统我们构建了根文件系统,这节我们修改内核支持yaffs2文件系统 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C2440移植linux3.4.2内核之修改 阅读全文
posted @ 2020-12-29 16:47 学习,积累,成长 阅读(178) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植linux3.4.2内核之支持YAFFS文件系统我们修改了内核支持了yaffs2文件系统,这节我们裁剪内核。 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C2440移植linux3.4.2内核之修改分区以 阅读全文
posted @ 2020-12-29 16:44 学习,积累,成长 阅读(239) 评论(0) 推荐(0) 编辑
摘要:移植环境 主 机:VMWare--ubuntu16.04 开发板:S3C2440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2 获取uboot 进入https://www.denx.de/wiki/U-Boot下载uboot 阅读全文
posted @ 2020-12-29 16:43 学习,积累,成长 阅读(303) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植uboot之启动过程概述我们我们分析了uboot启动流程,这节将开始新建一块单板支持S3C2440。 1.新建单板 1.1 将2410的单板文件夹拷贝成2440: cd /work/system/u-boot-2012.04.01/board/samsung cp smdk2 阅读全文
posted @ 2020-12-27 20:12 学习,积累,成长 阅读(187) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植uboot之新建单板_时钟_SDRAM_串口移植uboot初始化了时钟,配置了支持串口,这一节我们继续修改uboot支持NAND启动。 1.去掉 "-pie"选项 参考之前uboot使用的start.S, init.c来修改uboot代码新的uboot链接地址位于0,且在ar 阅读全文
posted @ 2020-12-27 20:09 学习,积累,成长 阅读(265) 评论(0) 推荐(0) 编辑
摘要:上节烧写了uboot到开发板,不能运行。这节我们分析uboot重新编译uboot,由最后一条链接命令开始分析uboot 下图为编译uboot后显示的最后一条链接命令。 1.分析start.S 打开uboot.lds,发现链接地址为0,所以新的uboot只能在nor flash运行。运行开始文件为st 阅读全文
posted @ 2020-12-27 20:06 学习,积累,成长 阅读(360) 评论(0) 推荐(0) 编辑
摘要:上节S3C2440移植uboot之支持NAND启动修改了代码支持了NAND启动。这节我们分析uboo使其支持NORFLASH的操作。 1.分析启动错误 上一节启动uboot出现如下所示,我们搜索下错误代码Flash: 上面的Flash: *** failed *** 是属于uboot第二阶段函数bo 阅读全文
posted @ 2020-12-26 16:48 学习,积累,成长 阅读(161) 评论(0) 推荐(0) 编辑
摘要:上一节我们移植了uboot,S3C2440移植uboot之支持NORFLASH。这节我们继续移植,支持NANDFLASH。 编译报错 之前由于nand部分报错,直接注释了 u-boot- 2012.04.01\include\configs\smdk2440.h 中的#define CONFIG_C 阅读全文
posted @ 2020-12-26 16:48 学习,积累,成长 阅读(158) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植uboot之支持NANDFLASH操作移植了uboot 支持了NANDFLASH的操作,这一节修改uboot支持DM9000。 通过Makefile把dm9000x编译进uboot cd drivers/net vi Makefile 需要在文件中添加以下宏 在smdk244 阅读全文
posted @ 2020-12-26 16:47 学习,积累,成长 阅读(162) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植uboot之支持DM9000移植uboot支持了网卡驱动,这节裁剪和修改uboot默认参数 uboot的环境参数 首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. 而我们移植的uboot,由于一直没有使 阅读全文
posted @ 2020-12-26 16:44 学习,积累,成长 阅读(227) 评论(0) 推荐(0) 编辑
摘要:上一节S3C2440移植uboot之裁剪和修改默认参数裁剪了uboot,修改了默认的参数,这一节开始制作yaffs映像以及补丁文件 烧写文件系统 尝试使用如下命令烧写JFFS2文件系统 tftp 30000000 fs_mini_mdev.jffs2 nand erase.part rootfs n 阅读全文
posted @ 2020-12-26 16:41 学习,积累,成长 阅读(203) 评论(0) 推荐(0) 编辑
摘要:提示错误: arm-linux-gcc:Command not found PATH里有/usr/oca/arm/bin,但是make的时候,就是找不到 arm-linux-gcc 原因: export PATH=$PATH:/usr/local/arm/bin是设置当前用户的PATH,而sudo执 阅读全文
posted @ 2020-12-26 16:36 学习,积累,成长 阅读(811) 评论(0) 推荐(0) 编辑
摘要:方法一: 我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc。 此方法安装的是最新版的,但是此方法需要FQ,否则99%会失败,这就是为什么网上大多都用压缩包安装的原因: 首先Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-g 阅读全文
posted @ 2020-12-26 16:31 学习,积累,成长 阅读(2218) 评论(0) 推荐(0) 编辑
摘要:中文的windows下的cmd默认使用GBK的编码,敲代码时,页面使用的是UTF-8(65001),而powershell控制台默认使用的是GBK编码(936),用chcp命令可以查看。乱码主要是由于编码格式不同造成的。下面介绍两种方法x解决乱码问题: 方法一、chcp命令 每次需要的时候在VSco 阅读全文
posted @ 2020-12-26 16:30 学习,积累,成长 阅读(392) 评论(0) 推荐(0) 编辑
摘要:字符串相关 1.char *gets(char *s); #include<stdio.h> 功能: 从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止 参数: s:字符串首地址 返回值: 成功:读入的字符串 失败:NULL gets(str)与scanf(“%s”,st 阅读全文
posted @ 2020-12-26 16:29 学习,积累,成长 阅读(1152) 评论(0) 推荐(0) 编辑
摘要:open 函数定义: int open( const char * pathname, int flags); int open( const char * pathname,int flags, mode_t mode); 参数说明: pathname :文件的名称,可以包含(绝对和相对)路径 f 阅读全文
posted @ 2020-12-26 16:15 学习,积累,成长 阅读(498) 评论(0) 推荐(0) 编辑
摘要:Linux一切皆文件,系统与设备通信之前,要建立一个存放在/dev目录下的设备文件,默认情况下就已经生成了很多设备文件,有时候自己手动新建一些设备文件,这就会用到mknod。 语法格式:mknod[选项][文件名称] [文件类型] [主设备号] [次设备号] 常用参数: -Z 设置安全的上下文 -m 阅读全文
posted @ 2020-12-26 16:14 学习,积累,成长 阅读(941) 评论(0) 推荐(0) 编辑
摘要:@ 中断上半部、下半部的概念 设备的中断会打断内核进程中的正常调度和运行,系统对更高吞吐率的追求势必要求中断服务程序尽量短小精悍。但是,这个良好的愿望往往与现实并不吻合。在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理。 下图描述了Linux内核的中断 阅读全文
posted @ 2020-12-26 16:12 学习,积累,成长 阅读(509) 评论(0) 推荐(0) 编辑
摘要:@ 阻塞/非阻塞简介 阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入睡眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞操作的进程在不能进行设备操作时,并不挂起,它要么放弃,要么不停地查询,直至可以进行操作为止。 阻塞/非阻塞 阅读全文
posted @ 2020-12-26 16:04 学习,积累,成长 阅读(452) 评论(0) 推荐(0) 编辑
摘要:@目录内核中的并发和竞争简介原子操作原子操作简介整型原子操作函数位原子操作函数原子操作例程自旋锁自旋锁简介自旋锁操作函数自旋锁例程读写自旋锁读写锁例程顺序锁顺序锁操作函数自旋锁使用注意事项信号量信号量简介信号量操作函数信号量例程互斥体互斥体简介互斥体操作函数互斥体例程互斥体与自旋锁互斥体使用注意事项 阅读全文
posted @ 2020-12-26 15:53 学习,积累,成长 阅读(510) 评论(0) 推荐(0) 编辑
摘要:秋招投递公司23家,简历被刷1家。笔试/测评挂掉3家。至今无消息的8家。获得Offer的公司有小米,兆易创新,全志科技,浙江大华,海格通信,京信通信,景嘉微电子,广州朗国电子,北京华大电子,中国长科技集团。已签约浙江大华。 @目录有面试联发科北京(7.16)一面(35min,8.5)总结广州朗国电子 阅读全文
posted @ 2020-12-20 15:10 学习,积累,成长 阅读(1173) 评论(0) 推荐(0) 编辑
摘要:秋招是每个在校学生都要经历的一个阶段。本篇文章记录了自己的秋招历程。秋招投递公司23家,简历被刷1家。笔试/测评挂掉3家。至今无消息的8家。获得Offer的公司有小米,兆易创新,全志科技,浙江大华,海格通信,京信通信,景嘉微电子,广州朗国电子,北京华大电子,中国长城科技集团。已签约浙江大华。最后收获 阅读全文
posted @ 2020-12-18 21:25 学习,积累,成长 阅读(936) 评论(0) 推荐(3) 编辑
摘要:上一节拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现)我们在分析Linux内核链表的时候注意到内核在求解结构体偏移的时候巧妙的使用了container_of宏定义,今天我们来详细剖析下内核到底是如何求解结构体成员变量的地址的。 @ 结构体在内存中是如何存储的 int main() 阅读全文
posted @ 2020-12-18 15:03 学习,积累,成长 阅读(961) 评论(0) 推荐(0) 编辑
摘要:在实际的工作中,我们可能会经常使用链表结构来存储数据,特别是嵌入式开发,经常会使用linux内核最经典的双向链表 list_head。本篇文章详细介绍了Linux内核的通用链表是如何实现的,对于经常使用的函数都给出了详细的说明和测试用例,并且移植了Linux内核的链表结构,在任意平台都可以方便的调用 阅读全文
posted @ 2020-12-18 15:01 学习,积累,成长 阅读(4485) 评论(0) 推荐(2) 编辑
摘要:1.dw1000最小系统 2、器件选择建议: 射频前端 射频前端需要将差分信号转换成单端射频信号,一般使用HHM1595A1(俗称巴伦)。 频率参考 晶振一般选择38.4MHZ的TCXO,但是要注意加上LDO(TPS73601DBVR) PLL环路滤波器 dw1000内部有两个锁相环电路,可生成基带 阅读全文
posted @ 2020-12-17 11:09 学习,积累,成长 阅读(687) 评论(2) 推荐(1) 编辑
摘要:@ Bootloader启动流程分析 Bootloader的启动过程可以分为单阶段、多阶段两种。通常多阶段的 Bootloader能提供更为复杂的功能以及更好的可移植性。从固态存储设备上启动的 Bootloader大多都是两阶段的启动过程。第一阶段使用汇编来实现,它完成一些依赖于CPU体系结构的初始 阅读全文
posted @ 2020-12-17 09:11 学习,积累,成长 阅读(5554) 评论(0) 推荐(4) 编辑
摘要:@ 为什么要有相对跳转和绝对跳转? 顺序执行:指令一条一条按照顺序往下执行,比如变量的定义和赋值都是按照顺序执行的。 跳转执行:当指令执行到当前位置后跳转到其他位置执行。比如,在主函数中调用其他函数就是典型的跳转执行。其中跳转又分为绝对跳转和相对跳转。 绝对跳转:直接跳转到一个固定的,实实在在的地址 阅读全文
posted @ 2020-12-17 09:09 学习,积累,成长 阅读(975) 评论(0) 推荐(0) 编辑
摘要:@目录1.双向链表的定义2.双向链表的创建3.双向链表的插入4.双向链表的删除5.双向链表更改节点数据6.双向链表的查找7.双向链表的打印8.测试函数及结果 1.双向链表的定义 上一节学习了单向链表单链表详解。今天学习双链表。学习之前先对单向链表和双向链表做个回顾。 单向链表特点: 1.我们可以轻松 阅读全文
posted @ 2020-12-16 14:56 学习,积累,成长 阅读(2681) 评论(0) 推荐(2) 编辑
摘要:上节介绍了链表的基本操作史上最全单链表的增删改查反转等操作汇总以及5种排序算法(C语言) 这节介绍链表的5种排序算法。 @ 0.稳定排序和原地排序的定义 稳定排序: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在r 阅读全文
posted @ 2020-12-16 14:54 学习,积累,成长 阅读(848) 评论(0) 推荐(4) 编辑
摘要:1.准备工作 首先包含头文件,定义链表结构体,产生随即链表的范围,定义全局头尾节点。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 10 /*定义链表*/ typedef struct Node { in 阅读全文
posted @ 2020-12-16 09:31 学习,积累,成长 阅读(528) 评论(0) 推荐(0) 编辑
摘要:前几天在学习交流群里,有个小伙伴问了一个问题,是关于有符号整数和无符号字符数的运算的问题。对于这部分,我个人理解的也有点问题,现在来做个总结回顾。 有符号整型和无符号数整型 举例 #include <stdio.h> #include <stdlib.h> int main() { int a = 阅读全文
posted @ 2020-12-15 15:24 学习,积累,成长 阅读(439) 评论(0) 推荐(0) 编辑
摘要:1.为什么NAND FLASH不能直接运行程序 NAND FLASH本身是连接到了控制器上而不是系统总线上。CPU运行机制为:CPU启动后是要取指令执行的,如果是SROM、NOR FLASH 等之类的,CPU 通过地址线发个地址就可以取得指令并执行,NAND FLASH不行,因为NAND FLASH 阅读全文
posted @ 2020-12-14 09:13 学习,积累,成长 阅读(570) 评论(0) 推荐(0) 编辑
摘要:这是CSAPP的第三个实验,主要让我们熟悉GDB的使用,理解程序栈帧的结构和缓冲区溢出的原理。 实验目的 本实验的目的在于加深对IA-32函数调用规则和栈结构的具体理解。实验的主要内容是对一个可执行程序“bufbomb”实施一系列缓冲区溢出攻击(buffer overflow attacks),也就 阅读全文
posted @ 2020-12-12 15:13 学习,积累,成长 阅读(1214) 评论(0) 推荐(0) 编辑
摘要:这是CSAPP的第二个实验,主要让我们理解代码的机器级表示,最重要的是理解每个寄存器的作用以及如何使用这些寄存器。本次的实验内容有点晦涩难懂,对于这些内容多看下习惯就好了。 本次实验中的bomb文件中共有7个炸弹问题(6个显式的和1个隐藏的),每条问题只有输入正确的答案才能进入下一题,否则则会触发爆 阅读全文
posted @ 2020-12-10 17:12 学习,积累,成长 阅读(1555) 评论(0) 推荐(1) 编辑
摘要:本章主要介绍了计算机中的机器代码——汇编语言。当我们使用高级语言(C、Java等)编程时,代码会屏蔽机器级的细节,我们无法了解到机器级的代码实现。既然有了高级语言,我们为什么还需要学习汇编语言呢?学习程序的机器级实现,可以帮助我们理解编译器的优化能力,可以让我们了解程序是如何运行的,哪些部分是可以优 阅读全文
posted @ 2020-12-09 08:58 学习,积累,成长 阅读(928) 评论(0) 推荐(0) 编辑
摘要:本章主要研究了计算机中无符号数,补码,浮点数的编码方式,通过研究数字的实际编码方式,我们能够了解计算机中不同类型的数据可表示的值的范围,不同算术运算的属性,可以知道计算机是如何处理数据溢出的。了解计算机的编码方式,对于我们写出可以跨越不同机器,不同操作系统和编译器组合的代码具有重要的帮助。 @ 信息 阅读全文
posted @ 2020-12-08 10:41 学习,积累,成长 阅读(1075) 评论(0) 推荐(0) 编辑
摘要:本文是CSAPP第二章的配套实验,通过使用有限的运算符来实现正数,负数,浮点数的位级表示。通过完成这13个函数,可以使我们更好的理解计算机中数据的编码方式。 准备工作 首先去官网Lab Assignments获得实验相关的文件(也可以加我QQ获取教学视频、PPT等内容)在每个实验文件的README中 阅读全文
posted @ 2020-12-06 21:45 学习,积累,成长 阅读(558) 评论(0) 推荐(0) 编辑
摘要:本章通过跟踪hello程序的生命周期来开始对计算机系统进行学习。一个源程序从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止。我们将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念、专业术语和组成部分。 @ 好久没有更新博客了,从国庆节到现在一直在整理秋招的一些资料,简历模版,嵌 阅读全文
posted @ 2020-12-04 14:55 学习,积累,成长 阅读(508) 评论(0) 推荐(2) 编辑

  1. 1 少年 梦然
  2. 2 尘埃 林小柯
  3. 3 飞鸟和禅 任然
  4. 4 Dancing With Your Ghost Sasha Sloan
  5. 5 烟火人间 添儿呗
  6. 6 摘仙 伊格赛听、叶里
少年 - 梦然
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
点击右上角即可分享
微信分享提示