自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

车子(chezi)

熟能生巧,功不唐捐

  • 博客(304)
  • 资源 (8)
  • 收藏
  • 关注

原创 C语言的复合语句表达式

看一个例子int main(void){ int x = 10; int y = 1; int c = ({x;y;}); printf("c = %d\n",c);}第 5 行,这样写合法吗?答案是合法,结果输出 1再比如({ int y = foo(); int z; if(y > 0) z = y; else z = -y; z;})这就是复合语句表达式。

2020-07-26 20:10:48 6512 1

原创 C 语言内联汇编介绍

文章目录为什么要用内联汇编内联汇编的基本要素语法汇编语句模板操作数输出部分和输入部分操作数约束常用约束寄存器操作数约束内存操作数约束 (m)匹配(数字)约束为什么要用内联汇编首先,对于那些频繁调用的函数,为了提高执行效率,直接用汇编写比较好。其次,有些功能只能用汇编实现,比如开中断和关中断:#define sti() __asm__ ("sti"::)#define cli() __asm__ ("cli"::)内联汇编的重要性体现在它能够灵活操作,而且可以使其输出通过 C 变量显示出来。因为

2020-07-26 15:57:31 2243

原创 head.s 剖析——Linux-0.11 剖析笔记(五)

文章目录一、加载段寄存器LSS指令二、设置中断描述符表(IDT)中断处理过程 `ignore_int`三、设置全局描述符表(GDT),加载 GDTR四、重新加载段寄存器五、检测A20是否开启六、检测 `x87` 协处理器关于异或按位异或的3个特点按位异或的几个常见用途1. 使某些特定的位翻转2. 不使用临时变量就可以实现两个值的交换3. 在汇编语言中经常用于将变量置零4. 快速判断两个值是否相等七、开启分页,跳转到 main()为调用 `main()`函数做准备设置页目录和页表八、总结head.s 程序在

2020-07-18 00:20:20 1081 6

原创 x86分页机制详解

文章目录1. 为什么会有分页机制?2. 从虚拟地址到物理地址3. 简单的分页模型4. 页表和页目录4.1 层次化的分页结构4.2 页表4.3 页目录5. 地址变换的具体过程1. 为什么会有分页机制?有些资料说是为了实现“虚拟内存”,真的是这样吗?如果没有分页机制,能否实现“虚拟内存”?答案是肯定的。当同时运行的任务很多时,内存可能就不够用。如图所示,每个段描述符都有 AVL 位(简称 A 位),用于表示一个段最近是否被访问过(准确地说是表明从上次操作系统清零该位后一个段是否被访问过)。当创建描述

2020-07-13 23:10:18 1980 2

原创 简单的分页模型

分页机制是 80x86 内存管理机制的第二部分。它在分段机制的基础上完成虚拟(逻辑)地址到物理地址的转换。为了理解分页机制,本文介绍一个简单的分页模型,虽然简单,但是对理解真正的分页模型非常有帮助。咱们开始吧!在单纯的分段模式下,线性地址就是物理地址。比如下面的汇编语句:mov edx [0x1008]这是要把内存中某个位置的值赋给 EDX,但究竟是内存的哪个位置呢?这就要看数据段描述符了。假设描述符中的段基地址为 0x0020_0000,界限值为 0x2007,段的粒度是字节 ,那么该段的最大

2020-07-10 22:51:12 792

原创 setup.s 总结——Linux-0.11 剖析笔记(四)

上一篇文章 setup.s 解读——Linux-0.11 剖析笔记(三) 详细地解释了 setup.s 的代码,整个代码完成的任务有:获取一些参数保存在 0x90000 处保存光标的位置获取从 1M 处开始的扩展内存大小获取显示模式检查显示方式(EGA/VGA)并获取参数复制硬盘参数表(包括检查系统是否有第2个硬盘)关中断移动 system 模块到 0x00000加载 IDT 和 GDT开启 A20设置 8259进入保护模式(使 CR0 的 PE 位 = 1)跳转到 0

2020-07-05 11:07:24 499

原创 伪指令 .align 的含义

伪指令 .align 的作用是在编译时指示编译器填充位置计数器(类似指令计数器)到一个指定的内存边界处,目的是为 了提高 CPU 访问内存中代码或数据的速度和效率。其完整格式为:.align val_1 , val_2, val_3其中第 1 个参数值 val_1 是所需要的对齐值;第 2 个是填充字节的值,填充值可以省略,若省略则编 译器使用 0 值填充。第 3 个用来指明最大用于填充或跳过的字节数。如果进行边界对齐会超过 val_3 指定的最大字节数,那么就根本不进行对齐操作。如果需要省略第 2 个

2020-07-01 22:47:09 2282

原创 setup.s 解读——Linux-0.11 剖析笔记(三)

题目:setup.s 解读——Linux-0.11 剖析笔记(三)更新记录版本时间修订内容1.02018-4-14增加了“获取显示模式”这一节,AL取值的表格2.02020-6-27补充了一些内容本文由 setup.s 分析—— Linux-0.11 学习笔记(二) 修改而来。文章目录定义符号常量获取一些参数保存在 0x90000 处保存光标的位置获取从 1M 处开始的扩展内存大小获取显示模式检查显示方式(EGA/VGA)并获取参数复制硬盘参数表复制 HD0

2020-06-27 21:25:37 2108 3

原创 bootsect.s 解读——Linux-0.11 剖析笔记(二)

题目:bootsect.s 解读——Linux-0.11 剖析笔记(二)文章目录一些符号常量老式Linux设备号的命名规则bootsect 把自己搬运到 0x90000,并跳转加载 setup 模块到 0x90200INT 13H AH=02H:读扇区INT 13H AH=00H:磁盘控制器复位获得磁盘驱动器参数(主要是每磁道的扇区数)INT 13H AH=08H:读取驱动器参数打印 “Loading system ...”INT 10H AH=03H:获取光标位置和形状INT 10H AH=13H:写字

2020-06-22 23:09:43 2227 2

原创 硬盘的工作原理

文章目录物理结构容量计算磁盘读写的三个步骤磁盘读写响应时间物理结构一块磁盘有若干盘片,每个盘片有上下两个面,每个盘面都对应地有一个读写磁头,所以经常用磁头来指代盘面。磁头都有编号,第一个盘片,上面的磁头编号是 0,下面的磁头编号是 1;第二个盘片,上面的磁头编号是 2,下面的磁头编号为 3,…下图显示的是一个盘面,盘面中一圈圈的灰色同心圆为一条条磁道。磁道也要编号,从盘面最外面的那条磁道开始,向着圆心的方向,从 0 开始编号。所有盘面具有相同编号的磁道形成一个圆柱,称之柱面。柱面是一个用来优化

2020-06-21 20:36:11 573 1

原创 bootsect.s 预备——Linux-0.11 剖析笔记(一)

文章目录boot 目录下文件介绍16 位代码是什么意思计算机启动过程Linux 0.11 启动过程boot 目录下文件介绍boot 目录中一共有三个文件,都是用汇编语言写的,如下图(图来自赵炯的书)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQUWW8oT-1592127754860)(pics/image-20200614102237979.png)]我是在 https://mirrors.edge.kernel.org/pub/linux/kernel/His

2020-06-14 17:43:24 1099 3

原创 大龄程序员有出路吗

今天我面试了一个程序员,论学历,知名 985 的本科加硕士;论工作经历,12 年工作经验,待过好几个大公司,还有一些外企。如此亮眼的简历,很难不让我对他的能力抱有期待。既然是招搞技术的,编码功底是必须的,我递过去一张纸,让他写个单链表的代码,写得很不流畅,还犯了一些低级错误。好吧,那就根据简历上的工作经历提问。仔细看看他待过的公司,时间都不长,基本上是 2 年一跳。从行业来看,也是五花八门,从来没有在一个行业深钻过。他也意识到了,对我说,感觉什么都会,但是都不精通,应该在一个公司稳定下来。这引发了我

2020-06-08 22:39:27 964

原创 如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢?本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。1. 注册账号去“码云”注册一个账号,然后登录。2. 准备好链接进入 GitHub 项目主页,复制地址。3. 创建仓库点击加号,创建仓库。在弹出的界面中找到“导入已有仓库”,点...

2020-04-12 21:23:55 1862

原创 如何给Typora安装主题

文章目录主题从哪里来如何安装主题How to install a theme测试Typora 是一款优秀的 .md 格式编辑软件。它自带的主题不多。本文介绍如何给 Typora 安装主题。主题从哪里来一般是去官网下载,下载地址是:http://theme.typora.io/比如:选择你喜欢的主题,点击 Download 就可以下载。如果对源码有兴趣,可以点 Homepage,很多代...

2020-04-12 18:41:37 20796

原创 《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。毕竟我不是作者,只有作者的解读才是最权威的。当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。如果你正在学这本书或者汇编语言,那你有福气了。本书作者李忠老师,以此书为蓝本,录制了全套视频。试看点这里如...

2020-04-06 11:06:57 5107 6

原创 C/C++中 static 的作用

在C中,有三个作用:1.修饰全局变量: 作用是隐藏,也就是这个全局变量仅在本文件中可见2.修饰局部变量:作用是扩展变量的生存期,令这个局部变量成为静态的3.修饰函数:作用是隐藏,将此函数的作用域限制在本文件中在C++中,有两个作用:1.修饰成员变量:静态成员是类的所有对象中共享的成员,而不是某个对象的成员。对多个对象来说,静态数据成员只存储一处。2.修饰成

2020-04-05 22:28:12 832

原创 三门问题

三门问题本文摘自我的公众号【车子的心智探索】欢迎关注我!题目三门问题,也叫蒙提霍尔问题或山羊问题。这个问题最早出自美国一档电视节目,此节目的主持人叫蒙提霍尔。假设你是参赛者。你面前有三扇关闭的门,其中一扇门后面有一辆汽车,而另外两扇门后面各有一只山羊。当然汽车值钱,你希望选中藏有汽车的那扇门。游戏规则是:你选定一扇门,但先不开启,知道答案的主持人会开启剩下两扇门中的一扇,露出其中一...

2020-03-29 21:54:55 6415

原创 五分钟了解先验概率和后验概率

五分钟了解先验概率和后验概率本文摘自我的公众号【车子的心智探索】欢迎关注我!不理解先验概率和后验概率?莫慌,本文可以帮你。从面积的角度看概率在说正题之前,咱们从面积的角度认识一下概率。拿掷骰子来说,每个点的概率是相等的,因为总概率是 1,所以每个点数的概率是 1/6。我们用格子的大小来表示概率,那么掷骰子的概率图是这样的:如果把掷出的点数小于等于 4 记作事件 F,问你 P(F)...

2020-03-15 20:33:20 2787

原创 C语言指针入门 《C语言非常道》

C语言基础之指针初步文章目录C语言基础之指针初步初识指针取地址运算符和指针变量的声明指针指向什么类型很重要解引用运算符总结与补充指针是 C 语言的难点,也是亮点。有人说如果不懂指针,那就不算是掌握了 C 语言。作为一个嵌入式软件工程师,我认为指针是 C 语言的杀手锏,离开了它,C 语言不可能在嵌入式领域“一览众山小”。好了,进入正题。初识指针int a = 5;这句话定义了 int...

2019-09-24 23:32:52 1035 2

原创 C 语言基础之数组

文章目录什么是数组数组变量的声明多维数组什么是数组数组,顾名思义,就是一组数。假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码:int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int ZhouJie_score = 7...

2019-09-17 22:57:42 1390

原创 C 语言的基本数据类型

C 语言的基本数据类型注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢?如果写了一句:int a;那么执行的时候在内存中会有什么变化呢?橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。上图就是我在某宝的...

2019-09-13 21:54:10 412

原创 问题解决: SSR 的 1080 端口被占用

问题解决: SSR 的 1080 端口被占用在我的博客 故障解决:端口已被占用 1080 中已经讨论了一些方法,但也不是每次都能成功。对于 SSR,我们完全可以换一种思路:既然 1080 被占用了,那我就换个端口。找到配置文件 gui-config.json找到"localPort" : 1080,你完全可以换一个端口号,比如"localPort" : 12345,保存后重启 ...

2019-08-09 23:24:16 75881 25

原创 这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》心智程序大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的软件,...

2019-07-28 22:27:41 776

原创 嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题:虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业找...

2019-06-26 00:09:37 5872 6

原创 批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件批处理创建空文件有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗?假设我是 windows 操作系统,打开命令行。输入以下命令试试:echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%输出类似:2019_06_24_22_...

2019-06-24 23:03:27 3318

原创 Python学习之迭代器协议

文章目录迭代(iteration)可迭代(iterable)迭代器(iterator)迭代器协议(iterator protocol)迭代器协议与 for 循环参考资料迭代(iteration)逐个获取元素的过程,就是「迭代」。例如:# iteration# 用 for 循环迭代序列a_list = [1, 2, 3]for i in a_list: print(i)...

2019-05-16 23:19:10 726

原创 参数匹配顺序——Python学习之参数(三)

参数匹配顺序——Python学习之参数(三)文章目录参数匹配顺序——Python学习之参数(三)函数参数匹配表参数匹配顺序keyword-only 参数的位置参考资料这篇博文是对上一篇博文参数匹配模型的总结与扩展。函数参数匹配表下面的表格总结了Python中参数匹配的语法。考虑到翻译过来可能不准确,我就不翻译成中文了。参数匹配顺序在函数调用中,参数必须以此顺序出现:任何位置参数,后...

2019-05-02 19:39:47 886 1

原创 参数匹配模型——Python学习之参数(二)

参数匹配模型——Python学习之参数(二)文章目录参数匹配模型——Python学习之参数(二)位置参数:从左至右进行匹配关键字参数:通过参数名进行匹配默认参数:为没有传入值的参数定义参数值可变参数:收集任意多于基于位置或关键字的参数可变参数解包:传递任意多的基于位置或关键字的参数Keyword-only参数:参数必须按照名称传递参考资料位置参数:从左至右进行匹配一般情况下,也是我们最常使用...

2019-04-14 22:18:02 604

原创 禁止复制的网页怎么复制

禁止复制的网页怎么复制文章目录禁止复制的网页怎么复制前言准备工作操作步骤一、在浏览器菜单中找到“开发者工具”二、点击“检查元素(inspect element)”按钮三、在网页中选取需要的片段,锁定对应的元素四、复制被选中的元素五、粘贴到记事本,以`.html`为后缀命名六、打开`xxx.html`,优雅地复制前言在浏览网页的时候,有的网页内容无法复制。比如「360doc个人图书馆」,虽然选...

2019-04-07 23:05:05 1464

原创 Windows如何添加右键新建菜单

Windows如何添加右键新建菜单文章目录Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步总结实验环境Windows7缘起因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢?网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效。在尝试的过程中,我摸索出了一种...

2019-03-24 20:34:12 10970 6

原创 Python学习之函数返回多个值

Python学习之函数返回多个值问题的引出Python中,一个函数能不能一次返回多个值?在C语言中,函数最多返回一个值,如果要返回多个值,可以把这些值封装在一个结构体中。注意,C语言不允许函数返回整个数组。Python中,可以返回任意类型的对象,如果想返回多个值,可以把这些值封装成一个元组或者其他的集合类型。举例>>> def multiple(x, y):... ...

2019-03-24 10:37:29 2245

原创 Python学习之参数(一)

Python学习之参数(一)文章目录Python学习之参数(一)参数的传递避免可变参数的修改【未完待续】参考资料参数的传递所有的参数实际上都是通过指针进行传递的。作为参数被传递的对象从来不自动拷贝。在函数内部的参数名的赋值不会影响调用者。如果传入的是可变对象,那么在函数内就可以就地改变这个可变对象,这可能会影响调用者。Python通过赋值进行传递的机制与C++的引用参数选项并不...

2019-03-21 23:21:16 399

原创 Python学习之zip函数

Python 学习之 zip 函数问题的引出有时候,你可能想同时迭代两个序列。假设有下面两个列表:names = ['anne', 'beth', 'george', 'damon']ages = [12, 45, 32, 102]如果要打印名字和对应的年龄,可以这样做:>>> names = ['anne', 'beth', 'george', 'damon']&...

2019-03-10 11:54:16 376

原创 Python学习之共享引用

Python 学习之共享引用文章目录Python 学习之共享引用什么是共享引用共享引用和在原处修改(Shared References and In-Place Changes)共享引用和相等参考资料什么是共享引用假设我们在Python交互模式下输入以下语句:>>> a = 3>>> b = a实际的效果就是变量a和b都引用了相同的对象(指向了相...

2019-03-09 22:14:19 687

原创 Python学习之变量、对象和引用

Python学习之变量、对象和引用文章目录Python学习之变量、对象和引用问题的引出变量创建变量类型变量使用动态类型类型属于对象,而不是变量对象的垃圾收集参考资料问题的引出当在Python中运行赋值语句a=3时,熟悉C语言的朋友肯定会感到奇怪:难道变量a不需要定义吗?Python是怎么知道变量a的类型的?变量创建一个变量(也就是变量名),就像a,当代码第一次给它赋值的时候就创建了它。之...

2019-03-09 10:25:36 825

原创 Python 学习之作用域

Python 学习之作用域文章目录Python 学习之作用域问题的引出代码块名称的绑定三种变量作用域名称解析LEGB 作用域查找规则global 和 nonlocalglobalnonlocal注意参考资料问题的引出请看这样一段代码:例1# test01.pyn = 5def test(): n += 1 print(n)test()猜猜运行结果是什么?咱...

2019-03-05 23:35:03 300

原创 __name__ == '__main__' 到底是什么意思

__name__ == '__main__'到底是什么意思相信许多人初学 Python 时,常会在例子程序中看到如下语句:if __name__ == '__main__': foo() # 或其他语句第 1 行的__name__ == '__main__'到底是什么意思呢?首先,如果你永远都只执行一个 xxx.py,而不去 import它的话,那你完全不需要了解这是什么。例如...

2019-02-12 22:15:26 32461 10

原创 Python 学习之元组

元组:不可修改的序列tuple(读音是 /tuːpəl/ 或 /tʌpəl/)与列表一样,元组也是序列,唯一的差别在于元组是不能修改的(你可能注意到了,字符串也不能修改)。元组语法很简单,只要将一些值用逗号分隔,就能自动创建一个元组。In [34]: 1,2,3Out[34]: (1, 2, 3)元组还可用圆括号括起(这也是通常采用的做法)。In [35]: (1,2,3)Out[3...

2019-01-27 20:39:21 718

原创 Python 学习之列表

文章目录函数 list基本的列表操作修改列表:给元素赋值删除元素给切片赋值列表方法appendclearcopycountextendindexinsertpopremovereversesort参考资料列表是可变的,即可修改其内容。函数 list如果你想使用字符串来创建列表,那就用函数list( 它实际上是一个类,而不是函数,但眼下,这种差别并不重要。),例如:In [1]: a = l...

2019-01-27 20:04:16 398

原创 python 中的序列

python 中的序列序列概述Python 内置了多种序列,比如列表、元组和字符串。列表和元组的主要不同在于:列表是可以修改的,而元组不可以。在需要处理一系列值时,序列很有用。在数据库中,你可能使用序列来表示人,其中第一个元素为姓名,第二个元素为年龄。如果使用列表来表示,将类似于下面这样:>>> edward = ['Edward Gumby', 42] 要点是:所...

2019-01-13 12:54:34 771

themes.zip

typora主题包,解压后覆盖目标文件夹即可。 # How to install a theme Download theme from this website or other place. Open typora. Click "Open Theme Folder" button from `Preference Panel` → `Appearance` section. Put downloaded content into the opened folder, make sure your css files are directly under that directory.

2020-04-12

《从实模式到保护模式》第15章习题二的答案

《从实模式到保护模式》第15章习题二的答案,经测试,符合题目要求。

2016-07-17

《从实模式到保护模式》第15章习题一的答案

《从实模式到保护模式》第15章习题一的答案,经测试,符合题目要求。

2016-07-17

《从实模式到保护模式》第15章代码修改

《从实模式到保护模式》第15章代码修改

2016-07-11

《从实模式到保护模式》第14章的代码(修改版)

《x86汇编语言:从实模式到保护模式》第14章的代码(修改版),内容包括: 课后习题1和2; 修复了一些BUG; 增加颜色支持; 用栈传递参数;

2016-06-04

《x86汇编语言:从实模式到保护模式》第13章代码补丁

我发现配书代码中有一个小小的BUG,制作了自己的补丁包,另外还添加了其他功能。比如字符串输出支持不同的颜色等。

2016-04-10

《从实模式到保护模式》配书源码和工具

《x86汇编语言:从实模式到保护模式》主要讲述INTEL x86处理器的16位实模式、32位保护模式,至于虚拟8086模式,则是为了兼容传统的8086程序,现在看来已经完全过时,不再进行讲述。《x86汇编语言:从实模式到保护模式》的特色之一是提供了大量典型的源代码。 本资源就是配书工具和源代码

2016-01-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除