瓶子的跋涉
🏺

瓶子的跋涉

=YuHeShui=

置顶文章

UEFI概述

UEFI概述

# BIOS阶段划分 * `SEC`: `Security`(安全) : 处理`平台重`事件,创造一个`临时的内存`区(此时内存还`未初始化`),在系统中作为一个可信的root,传递信息到`PEI` * `PEI `: `pre-efi initialization`(预EFI初始化):`初始化`一些`永久的内存`HOBS(`hand-off BLocks`)中内存,以及在HOBS里面的`FV`(firmware volume)位置,传递`控制权到DXE`阶段 * `DXE `:`driver execution environment`(驱动程序执行环境) :`重点`关注,服务器上`硬件驱
more...
C++泛化程序设计

C++泛化程序设计

#### 泛型程序设计 * 编程不依赖于具体数据类型的程序 * 将算法从特定的数据结构中抽象出来,成为通用的C++的模块为泛型程序设计奠定关键基础 #### 概念 * 在`C++ STL`库中用\"概念"来界定具备一定功能的数据类型 * 将“可以比大小的所有数据类型\(有比较运算符)“这一概念记为`Comparable` * 将”具有共有的复制构造函数并可以用‘=’赋值的数据类型“这一概念记为`Assignable` * 将“可以比大小,具有公有的复制构造函数并可以用’=‘赋值的所有数据类型”这个概念记作`Sortable` * 对于两个不同的概念A和B,如果概念A所需求的所有功能
more...

分类

最新文章

Qt实现WinIO

Qt实现WinIO

# WinIO头文件 ```c #ifndef WINIO_H #define WINIO_H //#include "..\drv\winio_nt.h" #include "winio_nt.h" #ifndef WINIO_DLL #define WINIO_API _declspec(dllimport) #else #define WINIO_API #endif extern "C" { ////初始化WinIO函数库 WINIO_API bool _stdcall InitializeWinIo(); // 关闭WinIO函数库 WINIO_API
more...
寄存器调试工具RU&RW的使用

寄存器调试工具RU&RW的使用

# RU工具入口 > `RU`是`AMI James Wang` ,其中包括`IA32 X64`版本的`Ru.EFI`和一个 `Windows` 版本的` Rw.EXE`。 * U盘格式需要是`Fat32格式` * 将` Ru文件` 当道`U盘根目录` * 将对应的` shell文件` 放到`efi/boot/`目录下 * 点击`Delete`进入` BIOS` ,`密码` 统一为 `123456` * 进入`Sava & Reset `页面 选中最后一个`Lanch EFI shell from file system` * 进入`Shell`里面之后,输入`Ru.efi` 进入`
more...
BIOS工程模块UEFI

BIOS工程模块UEFI

# 模块 ![模块与包概念](https://mmbiz.qpic.cn/mmbiz_png/ORog4TEnkbvthkUaBMX9zWiccSLd09Nd7brATH5cjS3s0NK5d8SmaukA2e8z2csFDcvyjaTLMUgibwOCXKHgeChw/640?wx_fmt=png "模块与包") * 包:是一组`模块`及`平台描述文件`(`.dsc`文件),包声明文件(`.dec`文件)组成的集合。 * `模块`(`可执行`文件,即`.efi`文件)像`插件一样`可以`动态地`加载到`UEFI内核`中。 * 每个成功模块由`元数据文件`(`.inf`)和`源文件`(有些
more...
EDK2入口函数

EDK2入口函数

# 入口函数 > 一个简单的`UEFI程序`,`至少`包含`两个`部分 > > * `C程序源文`件 : 用来实现`具体功能`,在复杂程序中源文件可能包含:`C/C++源代码`,`.asm汇编文件`(.s汇编文件,`uin资源`文件(字符串资源文件)和`.vfr`资源文件) > * `INF元数据`文件用来编译代码 ## 入口函数返回值类型`EFI_STATUS` > * 在`UEFI`中基本所有的返回值类型都是`EFI_STATUS`,其本质是`无符号长整数` > * 最高位为`1`时其值为`错误代码`,为`0`表示`正确`。听过`宏EFI_ERROR(Status)`可以判断`返回值
more...
C指针与操作寄存器方法

C指针与操作寄存器方法

在UEFI中主要使用函数指针来进行复制与交互,使用结构体复制的形式进行隐私函数实现与函数指针赋值,在系统传感器信息以及硬件资源设备进行获取时,通过操作寄存器的形式进行获取是一个理想的方案,如何使用寄存器来操作应将的常用使用方法,异或,取反,位域等操作。
more...
EDK2安装与双系统

EDK2安装与双系统

# 下载`ubuntu`系统 > 在[清华大学镜像站](https://mirrors.tuna.tsinghua.edu.cn/) > > * 点击获取`下载`链接(`IOS`) > * 选择你要下载的`Linux系统` # 设置U盘 > 下载[Rufus](https://rufus.ie/zh/) * 启动文件之后,选择自己的U盘,并选择自己下载好的`ubuntu`系统 ![选择分区与文件](https://mmbiz.qpic.cn/mmbiz_png/ORog4TEnkbtYJ63N9TX2XmJg8WuLBdkqFNeS8rE7nC5zjzlydCiad2sz3852em
more...
BIOS与系统启动

BIOS与系统启动

# 知识储备 > * C语言 > * C++ > * 汇编 > * Linux # 汇编部分补充 ## 数据描述符 * `AX`累加器:用到最多最频繁,AX,AH和AL在乘,除法等操作中有专门的用途。 * `BX`基址寄存器: 用于存放偏移地址 * `CX`为计数寄存器:在循环操作中做计数器用,用于控制循环程序的执行次数 * `DX`数据寄存器:在乘,除法及I/O端口操作时专门用途。 ## 指令 ### 操作方向标识为DF(`Direction Flas`) > 使用此指令`控制`方向标志`DF`,决定内存地址增大还是减小。 > > 在子串操作中使SI或DI的地址指针自动递减,字
more...
STL强化

STL强化

# 面向对象三大特征 >* `封装`是指将数据和行为组合成一个整体,对外部`隐藏`内部的`实现细节,`只提供必要的`接口`。封装可以`保护`数据的`安全性`,`降低`代码的`复杂度`,`提高`代码的`可维护性`。C++通过`private,protected,public`关键字来`控制`成员变量和成员函数的`访问权限` >* `继承`是指`子类可以继承父类`的属性和方法,并且可以`添加或修`改自己特有的属性和方法。`继承`可以提高`代码的复用性`;`提高`代码的`扩展性`;同时也是`多态的前提` >* `多态`是指`不同类型的对象`对`同一消息`可以做出`不同的响应`。多态可以分为`编译时
more...
做题追溯02

做题追溯02

# 深拷贝和浅拷贝 > 浅拷贝就是将`源对象`的值`拷贝`给当前对象,两者指向的还是`同一地址`,对`一个`对象的`修改`可能会`影响`到`另一个`对象。 ```cpp class MyArray { public: // 构造函数 MyArray(int size) { this->size = size; data = new int[size]; } // 拷贝构造函数,实现浅拷贝 MyArray(const MyArray& other) { size = other.size;
more...
做题追溯

做题追溯

# typedef > typedef并不是简单的宏替代。 > > * 定义一种`类型的别名` > * 定义`struct结构体别名` > * 用typedef来定义与`平台无关`的类型 > * 为`复杂的声明`定义一个`简单的别名`,表示的是一个指向`函数的指针` * 用`typedef`可以定义`各种类型别名`,但不能定义变量 * 使用typedef便于`程序的通用` * 用`typedef`只是将一个已经存在的类型用一个`新的名称`替代 * `typedef不`能添加`新类型` ## `typedef`和`#define`区别 > `typedef `是一种`类型别名`,而`#d
more...