diff --git a/IAR/IAR.md b/IAR/IAR.md index b700d53..60da620 100644 --- a/IAR/IAR.md +++ b/IAR/IAR.md @@ -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页面设置链接文件。 image-20250708152951214 + 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窗口即可查看寄存器信息 diff --git a/Library/Library.md b/Library/Library.md index f64c549..b0f6d15 100644 --- a/Library/Library.md +++ b/Library/Library.md @@ -13,21 +13,11 @@ **优点** -独立性:可执行文件包含所有依赖,无需外部库文件,部署简单。 - -性能:函数调用无额外开销(无动态链接加载过程)。 - -兼容性:避免版本冲突(如“DLL Hell”问题)。 - -代码优化:编译器可进行全程序优化(LTO)。 +代码合并到模块中,无零散文件。 **缺点:** -体积大:相同库代码被多次复制到不同程序,占用磁盘/内存。 - -更新困难:库更新需重新编译所有依赖它的程序。 - -内存浪费:多个进程无法共享同一库的物理内存。 +程序体积变大,当多个模块使用时,内存中有多份代码。 #### 1.2静态库的生成 @@ -69,23 +59,11 @@ **优点:** -节省资源:多个进程共享同一库,减少内存/磁盘占用。 - -更新灵活:更新库文件后,所有程序自动使用新版本(需兼容)。 - -模块化:支持插件机制(运行时加载)。 - -热修复:可替换库文件修复问题(无需重编译程序)。 +模块体积几乎不变,当多个模块调用是,只有一份代码。 **缺点:** -部署复杂:需确保目标系统存在正确版本的库(依赖管理)。 - -版本冲突:不同程序依赖同一库的不兼容版本(如DLL Hell)。 - -性能损耗:首次加载需地址重定位,轻微运行时开销。 - -安全性:恶意替换库文件可能导致安全隐患。 +代码在单独文件中,有零散文件。 #### 2.2动态库的生成 diff --git a/Source Insight/Source Insight.md b/Source Insight/Source Insight.md index 73e34f9..dd7826f 100644 --- a/Source Insight/Source Insight.md +++ b/Source Insight/Source Insight.md @@ -22,6 +22,8 @@ 选择上方菜单栏的Project,并选择其中的Synchronize Files进行代码的同步。 +选项功能是选择同步本地文件。 + image-20250708160555697 #### 1.4视图切换 diff --git a/Sourcetree/Sourcetree.md b/Sourcetree/Sourcetree.md index 89bb43f..f87f51f 100644 --- a/Sourcetree/Sourcetree.md +++ b/Sourcetree/Sourcetree.md @@ -140,6 +140,12 @@ Sourcetree 是一款由 Atlassian 开发的免费图形化版本控制客户端 合并分为平行合并和变基合并,平行合并会将分支的内容一次性挪到主干,变基合并会将分支的提交一个一个合并到主干。 +**软合并**:将问题放到暂存区。 + +**混合合并**:若是分支领先,则直接提交,如果出现分叉,则会进行合并提交。 + +**强制合并**:强制生成合并提交。 + image-20250708161247753 #### 3.3删除分支 diff --git a/UintTest/UnitTest.md b/UintTest/UnitTest.md index 247a4d8..6bb2487 100644 --- a/UintTest/UnitTest.md +++ b/UintTest/UnitTest.md @@ -26,6 +26,8 @@ image-20250709124004987 + + #### 2.2代码覆盖度 概念:**单元测试覆盖度**是衡量测试用例对代码逻辑覆盖程度的重要指标,通常包括行覆盖、分支覆盖、条件覆盖和路径覆盖等类型。它帮助开发者评估测试的全面性,确保代码的质量和稳定性。 diff --git a/VisualStudio/VisualStudio.md b/VisualStudio/VisualStudio.md index 9c676ff..6bf94c1 100644 --- a/VisualStudio/VisualStudio.md +++ b/VisualStudio/VisualStudio.md @@ -104,6 +104,13 @@ 右键项目名称,打开项目属性页,选择“配置属性”->“C/C++”->“代码生成”->“运行库”。 +| **选项** | **链接方式** | **依赖项** | **程序体积** | **调试信息** | **适用场景** | +| -------- | ------------ | ------------------------ | ------------ | ------------ | -------------------------- | +| /MT | 静态链接 | 无(独立部署) | 较大 | 无 | 独立应用、嵌入式系统 | +| /MTd | 静态链接 | 无(包含调试符号) | 最大 | 有 | 调试独立应用 | +| /MD | 动态链接 | msvcrt.dll(或更高版本) | 较小 | 无 | 常规应用程序(共享运行库) | +| /MDd | 动态链接 | msvcrtd.dll(调试版) | 中等 | 有 | 调试依赖 DLL 的应用程序 | + image-20250709084116006 #### 2.7调用库配置