Przeglądaj źródła

内容优化

kanxingyu
DESKTOP-J5JP3RN\kanxingyu 5 dni temu
rodzic
commit
c7833ecc13
6 zmienionych plików z 33 dodań i 26 usunięć
  1. +12
    -0
      IAR/IAR.md
  2. +4
    -26
      Library/Library.md
  3. +2
    -0
      Source Insight/Source Insight.md
  4. +6
    -0
      Sourcetree/Sourcetree.md
  5. +2
    -0
      UintTest/UnitTest.md
  6. +7
    -0
      VisualStudio/VisualStudio.md

+ 12
- 0
IAR/IAR.md Wyświetl plik

@@ -163,6 +163,14 @@ Linker页面设置链接文件。

设置库文件相关位置,同时在程序内include头文件,使用库。

| 选项 | 功能描述 |
| ------ | ------------------------------------------------------------ |
| none | 不链接任何标准库,适合资源受限的环境。 |
| normal | 链接标准 C 库的常规版本,平衡了代码大小和运行速度。 |
| full | 链接标准 C 库的完整版本,包含所有功能和调试信息,适合调试阶段。 |
| custom | 允许用户自定义库配置,可选择性地包含或排除某些库功能,用于优化代码大小。 |
| libc++ | 链接 C++ 标准库,适用于 C++ 开发。 |

![1](./Pictures/image-20250710142954145.png)

### 6.静态库的封装和调用
@@ -215,6 +223,10 @@ Linker页面设置链接文件。

<img src=".\Pictures\image-20250708152951214.png" alt="image-20250708152951214" style="zoom:50%;" />

r0~r3 主要用于子程序间传递参数, r4~r11 主要用于保存局部变量,但在 Thumb 程序中,通常只能使用 r4~r7 来保存局部变量; r12 用作子程序间scratch 寄存器,即 ip 寄存器; r13 通常用做栈指针,即 sp; r14 寄存器又被称为连接寄存器(lr),用于保存子程序以及中断的返回地址; r15 用作程序计数器(pc),由于 ARM 采用了流水线机制,当正确读取了 PC 的值后,该值为当前指令地址加 8 个字节,即 PC 指向当前指令的下两条指令地址。

CPSR和SPSR都是程序状态寄存器,其中SPSR是用来保存中断前的CPSR中的值,以便在中断返回之后恢复处理器程序状态。s

### 10.内存信息

打开view的memory窗口即可查看寄存器信息


+ 4
- 26
Library/Library.md Wyświetl plik

@@ -13,21 +13,11 @@

**优点**

独立性:可执行文件包含所有依赖,无需外部库文件,部署简单。

性能:函数调用无额外开销(无动态链接加载过程)。

兼容性:避免版本冲突(如“DLL Hell”问题)。

代码优化:编译器可进行全程序优化(LTO)。
代码合并到模块中,无零散文件。

**缺点:**

体积大:相同库代码被多次复制到不同程序,占用磁盘/内存。

更新困难:库更新需重新编译所有依赖它的程序。

内存浪费:多个进程无法共享同一库的物理内存。
程序体积变大,当多个模块使用时,内存中有多份代码。

#### 1.2静态库的生成

@@ -69,23 +59,11 @@

**优点:**

节省资源:多个进程共享同一库,减少内存/磁盘占用。

更新灵活:更新库文件后,所有程序自动使用新版本(需兼容)。

模块化:支持插件机制(运行时加载)。

热修复:可替换库文件修复问题(无需重编译程序)。
模块体积几乎不变,当多个模块调用是,只有一份代码。

**缺点:**

部署复杂:需确保目标系统存在正确版本的库(依赖管理)。

版本冲突:不同程序依赖同一库的不兼容版本(如DLL Hell)。

性能损耗:首次加载需地址重定位,轻微运行时开销。

安全性:恶意替换库文件可能导致安全隐患。
代码在单独文件中,有零散文件。

#### 2.2动态库的生成



+ 2
- 0
Source Insight/Source Insight.md Wyświetl plik

@@ -22,6 +22,8 @@

选择上方菜单栏的Project,并选择其中的Synchronize Files进行代码的同步。

选项功能是选择同步本地文件。

<img src="./Pictures/image-20250708160555697.png" alt="image-20250708160555697" style="zoom:50%;" />

#### 1.4视图切换


+ 6
- 0
Sourcetree/Sourcetree.md Wyświetl plik

@@ -140,6 +140,12 @@ Sourcetree 是一款由 Atlassian 开发的免费图形化版本控制客户端

合并分为平行合并和变基合并,平行合并会将分支的内容一次性挪到主干,变基合并会将分支的提交一个一个合并到主干。

**软合并**:将问题放到暂存区。

**混合合并**:若是分支领先,则直接提交,如果出现分叉,则会进行合并提交。

**强制合并**:强制生成合并提交。

<img src="./Pictures/image-20250708161247753.png" alt="image-20250708161247753" style="zoom:50%;" />

#### 3.3删除分支


+ 2
- 0
UintTest/UnitTest.md Wyświetl plik

@@ -26,6 +26,8 @@

<img src=".\Pictures\image-20250709124004987.png" alt="image-20250709124004987" style="zoom:50%;" />



#### 2.2代码覆盖度

概念:**单元测试覆盖度**是衡量测试用例对代码逻辑覆盖程度的重要指标,通常包括行覆盖、分支覆盖、条件覆盖和路径覆盖等类型。它帮助开发者评估测试的全面性,确保代码的质量和稳定性。


+ 7
- 0
VisualStudio/VisualStudio.md Wyświetl plik

@@ -104,6 +104,13 @@

右键项目名称,打开项目属性页,选择“配置属性”->“C/C++”->“代码生成”->“运行库”。

| **选项** | **链接方式** | **依赖项** | **程序体积** | **调试信息** | **适用场景** |
| -------- | ------------ | ------------------------ | ------------ | ------------ | -------------------------- |
| /MT | 静态链接 | 无(独立部署) | 较大 | 无 | 独立应用、嵌入式系统 |
| /MTd | 静态链接 | 无(包含调试符号) | 最大 | 有 | 调试独立应用 |
| /MD | 动态链接 | msvcrt.dll(或更高版本) | 较小 | 无 | 常规应用程序(共享运行库) |
| /MDd | 动态链接 | msvcrtd.dll(调试版) | 中等 | 有 | 调试依赖 DLL 的应用程序 |

<img src="./Pictures/image-20250709084116006.png" alt="image-20250709084116006" style="zoom:50%;" />

#### 2.7调用库配置


Ładowanie…
Anuluj
Zapisz