自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 资源 (8)
  • 收藏
  • 关注

翻译 如何在 C 代码中使用内联汇编语言

使用asm关键字可以在 C 代码中嵌入汇编语言指令. GCC 提供两种形式的内联asm语句. 基本asm语句不带操作数(请参阅 “基本asm- 不带操作数的汇编指令”), 而扩展asm语句(请参阅 “扩展asm- 带 C 表达式操作数的汇编指令”)包含一个或多个操作数. 如果要在函数中混合使用 C 语言和汇编语言, 最好使用扩展形式, 但如果要在顶层包含汇编语言, 则必须使用基本asm您还可以使用asm关键字覆盖 C 符号的汇编程序名称, 或将 C 变量置于特定寄存器中.asmasmasmasm基本asm。

2023-08-07 00:16:47 1071

翻译 llvm程序手册

有两种不同的设计模式在 C++ 程序中常常导致 使用虚函数调度 来处理 类型层次结构中的方法。第一种是真正的类型层次结构,其中层次结构中的不同类型 模拟了特定功能 和 语义的子集,并且这些类型严格嵌套在彼此之内。Value 或 Type 类型层次结构中可以看到很好的例子。第二种情况是希望。这种后一种用例可以通过定义一个所有实现都从中派生并重写的抽象接口基类来使用虚函数调度和继承来建模。然而,这种实现策略强制存在一个实际上并不有意义的 “is-a” 关系。

2023-06-18 12:04:25 441

原创 理解 ELF

ELF 即 Executable and Linking Format,可执行 可链接格式。可重定位文件共享目标文件可执行文件前面知道它在节头表中被登记, 且目标文件有很多节,节头表每个表项是个 Elf32_Shdr 的结构,就是说节头表其实是一个结构体数组。位置、数量、表项大小 分别有文件头中的表示什么是节索引: 文字为给出具体定义,只说明了节头表中保留的索引值都位于 SHN_LORESERVE(0xff00) ~ SHN_HIRESERVE(0xffff) 之间。

2023-01-02 21:55:21 411

原创 SplitFunctions (BOLT) - 优化阅读笔记

将函数拆分成更小的代码片段,从而执行更激进的代码段重排的优化在文件 bolt/lib/Passes/SplitFunctions.cpp。

2024-03-11 16:31:21 386

原创 SimplifyRODataLoads - 优化阅读笔记

【代码】SimplifyRODataLoads - 优化阅读笔记。

2024-03-11 16:22:13 263

原创 ReorderData - 优化阅读笔记

测试用例: bolt/test/reorder-data-writable-ptload.c。主要实现文件: bolt/lib/Passes/ReorderData.cpp。支持 X86/Arm。

2024-03-11 16:17:13 215

原创 MachineSink - 优化阅读笔记

该优化过程并非旨在替代或完全替代 LLVM IR 级别的下沉优化。它仅设计用于下沉简单的结构,这些结构在 lowering 和指令选择之前不会显现.该优化过程将指令移动到后继基本块中,以便它们不会在不需要其结果的路径上执行。

2024-03-11 16:08:42 296

原创 ThreeWayBranch 优化阅读笔记

优化后的 BB 5 跳转变成 fallthrough 性能会更好吗?通过重排三分支的 BB 块减少比较指令的执行次数。

2024-03-11 15:54:32 274

原创 Early if-conversion - 优化阅读笔记

按支配树的后序遍历访问块。后序遍历允许在单次遍历中进行嵌套的if转换。tryConvertIf() 函数可能会擦除块,但仅擦除由头块支配的块。这使得在后序遍历迭代器仍然活动时更新支配树是安全的。用于对于没有很多可预测指令的乱序CPU。目标是消除可能误预测的条件分支。来自分支两侧的指令都会被推测性地执行,并使用 cmov 指令选择结果。

2024-03-11 15:37:00 397

原创 PE文件格式二进制标注

详细当然是参考 《Windows PE 权威指南》这里标注的是文件的前面部分字节。

2024-03-09 17:58:13 178

原创 5. 函数调用过程汇编分析

翻译: 在 x86-32 目标机上,fastcall 属性会导致编译器在寄存器 ECX 中传递第一个参数(如果是 INT 类型),在寄存器 EDX 中传递第二个参数(如果是INT类型)。后面的参数和其他类型的参数会传递到堆栈中。被调用函数将参数从堆栈中弹出。如果参数个数不固定,所有参数都会被推入堆栈。

2024-01-21 21:57:00 589 1

原创 LLVM 生成 CFG/Dominator tree 图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。

2023-12-07 10:58:08 492

原创 LLVM lit测试用例出错: AttributeError: ‘NoneType‘ object has no attribute ‘use_lit_shell‘

【代码】LLVM lit测试用例出错: AttributeError: ‘NoneType‘ object has no attribute ‘use_lit_shell‘

2023-11-27 20:37:56 461

翻译 Linux内核中对大页支持的简要概述

这个文件的目的是提供Linux内核中对大页支持的简要概述. 这种支持是建立在大多数现代体系结构提供的多页大小支持之上的. 例如, x86 CPU通常支持4K和2M(如果有架构支持则支持1G)的页面大小, ia64架构支持多种页面大小, 包括4K、8K、64K、256K、1M、4M、16M、256M, ppc64支持4K和16M.. 通常, 这是处理器上非常有限的资源. 操作系统会尽量充分利用有限数量的TLB资源. 这种优化现在更加关键, 因为越来越大的物理内存(几GB)更容易获得.

2023-10-20 15:24:31 260

原创 设计模式笔记

面向对象程序设计(Object-Oriented Programming,缩写为 OOP)是一种范式,其基本理念是将数据块及与数据相关的行为封装成为特殊的、名为对象的实体,同时对象实体的生成工作则是基于程序员给出的一系列 “蓝图”,这些 “蓝图”就是类。设计模式是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。设计模式与方法或库的使用方式不同,你很难直接在自己的程序中套用某个设计模式。模式并不是一段特定的代码,而是解决特定问题的一般性概念。

2023-09-25 01:43:14 316

原创 使用 mold 加速 clang 构建

是一个多线程的链接器,比 gold/ld/lld 快不只一个数量级

2023-03-26 22:30:00 245

原创 mysql 编译提示 undefined reference to `xdr_pointer‘

undefined reference to xdr_pointer

2023-01-31 10:15:53 736

原创 BOLT: 一个实用的二进制优化器 - 笔记

FDO 都面临两个权衡:更早注入配置数据允许沿管道进行更多优化,映射级别越接近记录级别,结果越准确。链接后二进制优化允许perf采样以最高精度使用配置文件。IR 级别的数据映射常见问题是 函数在两个 caller 都内联。

2023-01-15 23:24:34 907

翻译 探索大型开源代码库的通用指南

心理建设:探索新的存储库当然是一项艰巨的任务。许多角度都在起作用——熟悉语言、理解所使用的工具或框架、组件如何相互集成、开发人员使用什么范例等。 本文试图提供一下方法论的指导,按照我的习惯,可能更倾向于从给出实际例子的情况体现该方法,可能会为了逻辑紧凑而放弃部分指导,还是希望大家看原文。

2023-01-08 20:17:02 304

原创 windows 上配置 vscode C/C++代码跳转

介绍 gtags 与两个插件实现 C/C++ 代码的跳转

2022-10-17 23:41:09 8445 3

原创 [语法问题] CPP模板不匹配-或找不到头文件

C++20 高级特性相关的编译报错.

2022-09-18 21:19:30 822

原创 [llvm cookbook] 1、LLVM设计与使用

了解如何把C语言代码编译为LLVM IR(Intermediate representation)及其他多种形式。与其他编译器(如 GNU Compiler Collection) 不同,LLVM 设计目标是成为一系列的库。

2022-06-20 23:31:06 513

原创 win 键不起作用

问题新领的键盘 win 键不起作用,灯是亮的,百度了很久也没找到解决办法,一度以为按键坏了解决办法Fn+Pause 关掉游戏模式就行了

2021-06-18 16:55:08 155

原创 文本比较工具

1、beyond compare效果如下:2、Perforce Helix Merge友情链接效果如下:

2021-04-11 22:05:17 220

原创 win10上搭建calng编译环境与vscode配置

参考了 大佬的博客win10上搭建calng编译环境1.下载安装 LLVM2.使用MinGW 提供的库 MingW-W64-builds注意选择x86_64下载可能不成功,尝试挂梯子和更换不同版本试一下(我装5.3.0时成功了)3.添加环境变量后可直接使用gcc编译(mingw-w64.bat)set PATH=C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin;%PATH%事实上通过观

2021-02-15 00:45:49 908

原创 套接口地址结构-ipv4

引言:不知道大家又没有遇到过这种情况,就是比如我想打印根据连接套接字打印点分形式的ip地址(如127.0.0.1),我知道我应该调用inet_ntoa(),然后去看man手册,是这样的:char *inet_ntoa(struct in_addr in);然后我知道我应该传一个struct in_addr的结构体/* Internet address. */typedef uint32_t in_addr_t;struct in_addr{ in_addr_t s_addr;};

2020-12-02 23:08:55 384

原创 doxygen入门

一、简介doxygen是解析源代码并生成文档主程序。有关更详细的用法信息,请参阅官网https://www.doxygen.nl/manual/starting.html,它有图形界面用来编辑配置信息,在MAC OS 中可以直接双击图标运行步骤1:检查doxygen是否支持您的编程语言默认支持以下语言:C,C ++,C#,Objective-C,IDL,Java,VHDL,PHP,Python,Fortran和D。可以配置某些文件类型扩展名以使用某些解析器。另外,通过使用预处理程序,可以支持完

2020-09-14 00:23:58 773

原创 一个越界导致的概率性重启问题排查

问题:现场设备出现了频繁重启问题,生成的coredump文件显示有好几个线程导致重启,其中4个都显示布防线程发出了signal 11布防线程相关代码:int RADAR_COORDINATE_SERVER::PicServ_SDK_Recv(int sockfd,char *pbuf, UINT32 buflen, UINT32 *dwOutlen){ ... NET...

2020-04-22 19:50:32 1197

原创 链接时缺少stdc++.so.6库

问题描述:算法同事给了dsp同事新的算法库(一堆),dsp同事把需要的拿出来,编译报了一堆错:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/../../../../arm-hisiv300-linux-uclibcgnueabi/bin/ld: wa...

2020-04-22 19:30:48 1095

原创 7、类

7.1 抽象数据类型struct Sales_data { //构造函数 Sales_data() = default; Sales_data(const std::string &s):bookNo(s){} Sales_data(const std::string &s,unsigned n,double p): bookNo(s),uni...

2020-04-07 00:34:26 138

原创 3、字符串、向量和数据

3.1 命名空间的using声明形式:using namespace::name;3.2 标准库类型string表示可变长的字符序列size()的返回值值类型是string::size_type,一个无符号的整数string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符两侧对象至少一个时string,如:string s6 = s1...

2020-03-08 23:23:25 267

原创 《C++ prime》笔记

2、变量和基本类型1.算术类型C++规定sizeof(int)>=sizeof(short),sizeof(long)>=sizeof(int),sizeof(long long)>sizeof(long),long long是C++11中新定义的double比float扩展了精度值,计算代价相差无几甚至更快,long double基本没必要的且带来的耗时也不容忽视需...

2019-11-11 00:03:57 370

原创 程序员节

听说今天发博客会有一枚1024勋章,那我先占个坑

2019-10-24 14:08:31 113

原创 6.系统数据文件和信息

1、引言历史原因数据文件通常是ASCII文本文件,,顺序扫描很花时间,我们需要非ASCII文本格式存放这些文件,但仍向使用其他文件格式的应用程序提供接口2、口令文件unix系统口令文件字段包含在pwd.h中的passwd结构中,历史原因,这是一个ASCII文件(/etc/passwd)通常包含root项,用户ID是0加密口令字段包含一个占位符某些字段可能为空shell字段包...

2019-09-15 22:10:02 242

原创 5.标准IO

1、引言标准IO库有ISO C标准说明标准IO库处理很多细节:包括缓冲区分配、优化的块长度执行IO2、流和FILE对象当用标准IO库打开或创建一个文件时,已使一个流与一个文件相关联对于ASCII字符集,一个字符用一个字节表示,对于国际字符集,一个字符可用多个字节表示。标准IO文件流可用单字节或多字节字符集。流的定向决定了所读写的字符是单字节还是多字节(创建时未定向),若在未...

2019-08-31 19:38:05 129

原创 04.文件和目录

1、stat()、fstat()、fstatat()、lstat()int stat(const char *path, struct stat *buf);int fstat(int fd, struct stat *buf);int lstat(const char *path, struct stat *buf);int fstatat(int dirfd, const char *...

2019-08-30 15:21:44 138

原创 07.进程环境

1、main()函数内核执行C程序时(使用一个exec函数),先调用一个特殊的启动例程(编译器调用连接编辑器,连接编辑器设置启动例程地址),启动例程从内核取得命令行参数和环境变量值。2、进程终止8种方式1.main()返回2.exit()3._exit()或_Exit()4.最后一个线程从启动例程返回5.最后一个线程调用pthread_exit()6.调用abort()...

2019-08-28 20:30:39 124

原创 08.进程控制

1.进程标识进程ID是唯一的,但也是可复用的,大部分系统采用延迟复用算法ID为0的通常是调度进程,常被称为交换进程,是内核的一部分,不执行磁盘上的程序(所以也叫系统进程)进程ID为1的通常是init进程,自举过程由内核调用,超级用户特权运行,但是普通的用户进程,不会终止#include <sys/types.h>#include <unistd.h>pid...

2019-08-28 20:30:05 127

原创 10.信号

信号是软中断,提供了一种处理异步事件的方法1.信号概念以SIG开头的,如夭折信号SIGABRT,闹钟信号SIGALRM等,linux 3.2.0支持31种,Solaris 10支持40种,POSIX实时扩展支持用户自定义的信号很多条件可以产生信号终端按键:如CTRL+C:SIGINT硬件异常:除数为0、无效内存引用:SIGSEGVkill()函数和kill命令某些软件发生,如...

2019-08-26 21:34:35 151

原创 14.高级IO

1.非阻塞IO设置方法1.open()时指定O_NONBLOCK标志2.已经打开的可用fcntl()打开O_NONBLOCK标志说明:POSIX标准规定无数据可读时read()返回-1,,errno=EAGAIN,文件结束返回02.记录锁(字节范围锁)商用UNIX系统提供了记录锁机制(使用数据库的前提),POSIX标准的基础是fcntl()方法,linux3.2.0支...

2019-08-26 20:23:16 97

qt-unified-windows-x64-4.6.1-online.exe

qt-unified-windows-x64-4.6.1-online.exe

2024-04-18

qt-opensource-windows-x86-mingw491_opengl-5.4.1.exe.7z

qt-opensource-windows-x86-mingw491_opengl-5.4.1.exe.7z

2021-09-23

doxygen中文手册与源码

为了方便下载与学习,打包了doxygen的源码压缩包与相关中文手册。注:手册仅仅是对官方文档的翻译,英文足够直接阅读原文的小伙伴可直接阅读原文学习。

2020-07-27

p4vinst64.exe

一个比较漂亮的文本比较工具,见博客描述:https://blog.csdn.net/qq_36337149/article/details/104306901

2020-02-14

长理-通信原理-题库照片

长理的,通信原理的题库,老师上课给我们看过,拍下来的,我分了一下类,对复习还是有帮助的,如果平时没有花很多时间的话。

2018-10-16

长理-数字信号处理A-题库

长理的数字信号处理题库,整理了一下,反正要是对考试是肯定有用的,如果平时上课没怎么听的话,或者作业没怎么认真做的话

2018-10-16

长理-通信电子线路题库

长理的通信电子线路往年的两套题(后面会有很多原题),

2018-10-16

mplayer源码及移植步骤

压缩包里面提供了mplayer的源码及其移植的步骤,还附带了一个使用FIFO程序控制mplayer的一个程序,适合初学linux并发操作作为联系

2018-07-26

rand_list.rar

用QT写的一个抽奖的程序。打开一个txt文件,自动生成名字列表,点开始然后点停止抽取名字

2018-02-25

空空如也

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

TA关注的人

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