03 2022 档案

摘要:正常情况下,三次握手的步骤如下: 1.客户端发送 SYN 包,包里携带一个序列号(随机数) 2.服务端接收到一个 SYN 包,发送 ACK 包,包里携带一个序列号(随机数)和一个响应号(SYN 包序列号加一)。 3.客户端接收到 ACK 包,比较以下响应号是否是自己的序列号加一,如果是,则握手成功。 阅读全文
posted @ 2022-03-27 18:34 一只吃水饺的胡桃夹子 阅读(285) 评论(0) 推荐(0) 编辑
摘要:一、基本内联汇编 1.asm [volatile] ("汇编指令") ——所有汇编指令,必须用双引号包起来,超过一条指令必须用用 \n 进行分割,为了排版,需要加上 \t。比如说,下面是一张加 \t 和不加 \t 的对比图,可以看出加上 \t 后指令会对齐: 和 C 语言一样,加上 volatile 阅读全文
posted @ 2022-03-26 17:49 一只吃水饺的胡桃夹子 阅读(605) 评论(0) 推荐(0) 编辑
摘要:在线编译网站 阅读全文
posted @ 2022-03-26 16:04 一只吃水饺的胡桃夹子 阅读(9) 评论(0) 推荐(0) 编辑
摘要:一、概要 初始化结束后,先开启中断,操作系统从内核态切换到用户态,接下来进程 0(操作系统代码)创建进程 1,老进程进入死循环: sti(); //开中断 move_to_user_mode(); //切换到用户态 if (!fork()) { //创建进程 1 init(); } for(;;) 阅读全文
posted @ 2022-03-22 13:22 一只吃水饺的胡桃夹子 阅读(279) 评论(0) 推荐(0) 编辑
摘要:C 代码的完整编译流程分为四个阶段:预处理、编译优化、汇编以及链接。前三个阶段对代码进行分析、优化和转换,最后一个阶段将程序依赖的所有对象文件进行整合,最终生成可执行的二进制文件。其中,链接根据发生时刻的不同,分为编译时链接、加载时链接和执行时链接。 一、静态链接 编译时链接最常用的叫法是静态链接, 阅读全文
posted @ 2022-03-16 21:30 一只吃水饺的胡桃夹子 阅读(97) 评论(0) 推荐(0) 编辑
摘要:众所周知,内存中存放着需要运行的代码和代码运行所需的一些数据。 一、计算机的缓存系统 由于工艺水平的限制,同价位下存储器容量越大访问速度越慢。磁盘的容量很大,但是远远无法满足 CPU 对数据访问速度的要求。而内存以快于磁盘几万倍甚至十几万倍的速度与 CPU 直接交互数据。但随着 CPU 的日益发展, 阅读全文
posted @ 2022-03-10 22:43 一只吃水饺的胡桃夹子 阅读(178) 评论(0) 推荐(0) 编辑
摘要:1.双!符号 众所周知,!表示逻辑非,如果我们需要完成这样一个功能:当一个字节的变量为 0 时,返回 0;当其为其他时,返回 1 。通常会有两种实现方式,一种是通过 if-else 语句,另一种是通过问号表达式 bit = byte?1:0。第二种方式相对于第一种方式来说,执行效率更高。现在来讲一下 阅读全文
posted @ 2022-03-10 12:56 一只吃水饺的胡桃夹子 阅读(66) 评论(0) 推荐(0) 编辑
摘要:C 语言项目管理包含三个部分,分别是编码规范、自动化测试和结构化编译。 一、编码规范 由于编码规范实在没有什么可说的,在这里附上 GNU 编码规范供参考。 二、测试 为了确保项目质量,在代码完成后通常需要进行测试,其中通过代码代替人工去实现测试的方法叫做自动化测试。 1.测试框架的功能 ——TAP 阅读全文
posted @ 2022-03-04 08:24 一只吃水饺的胡桃夹子 阅读(171) 评论(0) 推荐(0) 编辑
摘要:一、格式 一份 C 代码经过编译后,可以生成能直接运行的二进制文件,在不同操作系统上这些二进制文件有不同的特征,在 Windows 上通常后缀为 .exe,在 Linux 上通常没有后缀。除此之外,这些二进制文件在内部数据的组织和结构上也有很大的区别,针对 Windows 的有 PE 格式,类 Un 阅读全文
posted @ 2022-03-03 07:55 一只吃水饺的胡桃夹子 阅读(1098) 评论(0) 推荐(0) 编辑