# ecpp **Repository Path**: chikuoz/ecpp ## Basic Information - **Project Name**: ecpp - **Description**: 封装一些cpu指令操作与操作系统功能,尽可能隔离硬件平台与系统、编译器。 - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-01 - **Last Updated**: 2025-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: cpp开发工具包 ## README # ecpp (extra-cpp) ### 0 概要介绍 封装一些cpu指令、操作系统资源,尽可能隔离cpu/系统/编译器与上层软件。 ### 1 库使用方法(cmake) 通过CMakeLists.txt中变量 COMPILE_ECPP 控制逐层编译ecpp或者最后全量编译整个工程。 通过CMakeLists.txt中选择宏 __ECPP_ARCH_x86__/__ECPP_ARCH_ARM__ 来适配不同cpu的asm码。 目前ecpp库的实现大量依赖Linux操作系统。 linux环境下进入ecpp目录,执行以下命令,编译运行test/test.cpp测试 mkdir build cd build cmake .. [-DCMAKE_BUILD_TYPE="Release"] make make install ./ecpptest ### 2 库目录介绍 #### 2.1 cpu 封装了cpu级的操作,如内存锁,cas,asm混编范例等。 内含大量asm实现,强依赖于cpu,也是ecpp库的基石之一。 目前,cpu目录中提供了x86和arm两种常见cpu的asm操作。 #### 2.2 mem 内存管理库,提供动态内存分配、智能指针等接口。 其中的umem给出用户自实现的动态内存分配机制。 #### 2.3 stl 提供标准数据结构接口,包括vector,map等。 目前其实现基本只是直接封装c++标准stl的实现。 也即强依赖标准stl。 #### 2.4 alg 自定义常用算法库,包括时间轮算法等。 依赖于stl,同时是sys库中功能的基础。 #### 2.5 sys 操作系统资源库。对操作系统资源进行了封装。 提供包括任务(线程)、事件、定时器、工作站(线程池)、网络等的接口。 目前其实现强依赖于posix接口、linux-futex机制以及linux-socket。 注意,sys的代码设计只考虑并发安全,未考虑可重入。 #### 2.6 persistence 持久化功能库,提供数据持久化功能API。目前包含文件操作。 ### 3 cmake导入ecpp库 参考顶层CMakeLists.txt中 “#引入ecpp库” 部分。 ### 4 后续发展 4.1 添加ecpp的全局errno错误码,方便定位ecpp错误。 4.2 添加ecpp::test测试框架中的filter功能,运行指定名字的测试用例。