自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 C++学习笔记——编程思想

(1) 通过“对象生命周期结束时,必然调用析构函数”这一编程语言机制,确保资源一定会被释放,而不会因为用户忘记释放,或者代码执行出现异常,导致资源未被释放,出现内存泄漏的现象。(3) 将释放资源的代码写在类的析构函数当中。智能指针(std::unique_ptr、std::shared_ptr)、STL容器类(std::vector)。(4) 必要时,向用户提供访问封装的原生资源的接口函数。用户只需要创建资源管理对象,无需考虑申请和释放原生资源的细节。(2) 用户创建资源管理对象时,对象自动申请原生资源。

2023-11-17 15:04:06 140

原创 汇编语言综合试验5 - 用C语言实现一个简单的printf函数

本题是王爽老师《汇编语言(第4版)》的压轴题,具有一定难度。笔者基于自己编程中的踩坑经历,并结合大佬的解题思路,写成博客。这个试验设计得非常好,如果有心从头到尾理清逻辑,将会极大加深对C和汇编关系的理解。

2023-02-09 17:48:19 1591

转载 汇编语言:VSCode ASM扩展不能识别自定义标识符‘c‘的解决方法

代码来自《汇编语言(第4版)》实验5第(5)题。原因:VSCode的ASM扩展,会将C(不区分大小写)当作保留字,故如上代码将c作为段名使用,是不合法的。解决方法:很简单,将c改为其他标识符即可。

2022-12-14 16:56:46 1002

原创 QEMU虚拟机相关概念介绍

前言:本文围绕QEMU,介绍虚拟机相关进阶知识。为更好地理解本文,读者最好能够了解虚拟机的基本概念。

2022-06-30 16:51:40 7853

原创 在QEMU虚拟机中将Linux内核编译为EFI可执行文件并启动

在QEMU虚拟机中将Linux内核编译为EFI可执行文件并启动

2022-01-24 15:28:54 2695 1

原创 Jenkins声明式Pipeline中三个单引号和三个双引号的区别

在Jenkins声明式Pipeline(Declaritive Pipeline)中,如果需要执行多个命令,可以在Jenkinsfile中,将它们用三个单引号或三个双引号来包围。

2021-12-21 15:36:38 3230

原创 使用VS2019配置EDK2安装教程

Win10环境下EDK2的配置流程。图文并茂,非常详细!

2021-09-16 12:32:21 5230 5

原创 Linux x86-64 IOMMU详解(六)——Intel IOMMU参与下的DMA Coherent Mapping流程

在上一篇文章中,我们详细介绍了Intel IOMMU的初始化流程,并耗费大量笔墨讲述了此过程中Intel IOMMU与SWIOTLB二虎相争的故事。最终,SWIOTLB被禁用,而Intel IOMMU得以保留。现在,所有的DMA操作,都要经由Intel IOMMU了。本文将介绍Intel IOMMU在DMA Coherent Mapping过程中的作用。

2021-06-09 17:46:18 4308 4

原创 Linux x86-64 IOMMU详解(五)——Intel IOMMU初始化流程

长图预警!!!下图完整展示了Intel IOMMU的初始化流程,是对本文所有内容的总结。只要看懂这张图,读者就能够完全理解Intel IOMMU的初始化流程。接下来,笔者将按流程图的顺序,结合代码,介绍Intel IOMMU初始化流程的一些关键步骤。图中部分细节,本文可能并未提到,读者可结合代码自行理解。

2021-06-07 17:43:46 4474 5

原创 Linux x86-64 IOMMU详解(四)——启用Intel IOMMU的配置

BIOS配置在BIOS中,需要启用Intel VT和VT-d。VT是Virtualization Technology的缩写,而VT-d是Virtualization Technology for Directed I/O的缩写。后者正是Intel IOMMU的别名。

2021-06-04 13:49:41 11129 4

原创 Linux x86-64 IOMMU详解(三)——Intel IOMMU(硬件IOMMU)的功能与基本原理

本系列的第一篇文章已经提到,IOMMU分别有软件和硬件实现方式。软件IOMMU就是SWIOTLB,上一篇文章已经进行过详尽的介绍。而对于硬件IOMMU,有多个厂商都设计了自己的IOMMU。由于我的开发机器为Intel x86平台,因此接触的是Intel IOMMU。刚开始,我也找过网上很多资料,但是它们要么是基于较旧的Linux内核版本,要么理解不够深入。因此,即使我并没有深入地掌握Intel IOMMU的每一处细节,我还是愿意将自己所了解的知识,以尽可能浅显的形式展现出来。

2021-04-26 13:59:17 9587 3

原创 Linux x86-64 IOMMU详解(二)——SWIOTLB(软件IOMMU)

SWIOTLB概述上一篇文章已经提到,IOMMU的核心功能就是,实现在low buffer和high buffer之间的sync,也就是内存内容的复制操作。读者可能会想,内存的复制,在内核中,不就是调用memcpy()函数来实现的吗?没错,这就是本文要介绍的IOMMU的软件实现方式——SWIOTLB。之所以说是软件实现,是因为sync操作在底层正是调用memcpy()函数,这完全是软件实现的。......

2021-03-29 10:52:11 13423 4

原创 Linux x86-64 IOMMU详解(一)——IOMMU简介

前言近期所做的项目,与Linux内核的IOMMU机制有关,因此自己尝试去了解IOMMU的相关知识。我在网上多方查找,却总觉得是盲人摸象,难以形成一套系统化的知识体系。并且,许多代码是基于Linux v2.x、v3.x内核,而我当前项目是基于较新的Linux 5.5.4内核,有一些代码,乃至实现机制,都发生了根本性的变化。最终,还是决定自己研究代码,终于明白了IOMMU的初始化流程。现撰文分享,希望之后还有同行遇到此类问题时,能够参考本文,节约学习成本。

2021-03-16 10:40:02 13168

原创 深入理解C++——引用传递

引用传递,是C++非常重要的特性。引用传递能够将变量或对象本身作为参数传递,而不是复制一份副本后,传递副本。引用传递的主要作用有二:第一,函数内部可修改变量或对象。函数返回后,函数调用者得到的也是被修改后的值。常见场景:① 函数需要返回多个值,由于return只能返回一个值,因此可以将其他值以引用传递的形式修改。② 控制递归过程,可以令参数为引用传递,每次递归执行函数体,就会修改参数,当参数等...

2019-09-30 19:14:54 6467 1

原创 在新版Windows 10(五月版)中更改输入法切换的快捷键

可有可无的目录标题前言Windows 10先前版本的做法Windows 10新版本的做法前言长期以来,Windows操作系统切换输入法的快捷键都是"Ctrl + Shift",然而在新版(v18362.239,因发布于2019年5月,故又称"五月版")中,默认的切换输入法快捷键被改成了"左Alt + Shift",让我们很不习惯。怎样改回去呢?Windows 10先前版本的做法打开控制...

2019-07-27 09:49:53 9992

空空如也

空空如也

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

TA关注的人

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