llvm

win10下VSCode+CMake+Clang+GCC环境搭建

自闭症网瘾萝莉.ら 提交于 2020-05-04 06:07:04
win10下VSCode+CMake+Clang+GCC环境搭建 <!-- TOC --> win10下VSCode+CMake+Clang+GCC环境搭建 安装软件 安装VSCode插件 新建文件夹, 开始撸代码 main.cpp CMakeList.txt 配置 c_cpp_properties.json 配置CMake 配置调试文件 launch.json 和 task.json 编译和调试 <!-- /TOC --> 打算用C/C++把基本的数据结构与算法实现一遍, 为考研做准备, 因为只是想实现算法和数据结构, 就不太想用VisualStudio, 感觉VSCode不错, 遂在网上找了一些教程, 结合自己的需求, 配置一下开发环境. 安装软件 CMake CMake是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程; 官网 下载安装, 傻瓜式操作; 记得把安装目录下的bin文件添加到系统环境变量, 这个可以在安装的时候勾选, 勾选了就不用自己添加了; 检测是否安装成功: MinGW MinGW即Minimalist GNU For Windows,是将GNU开发工具移植到Win32平台下的产物,是一套Windows上的GNU工具集。简单说,MinGW是一个编译环境; 相当于linux下的GCC; 官网下载链接 ;

How to distinguish signed and unsigned integer in LLVM

允我心安 提交于 2020-04-29 11:48:19
问题 The LLVM project does not distinguish between signed and unsigned integers as described here. There are situations where you need to know if a particular variable should be interpreted as signed or as unsigned though, for instance when it is size extended or when it is used in a division. My solution to this is to keep a separate type information for every variable that describes whether it is an integer or a cardinal type. However, I am wondering, isn't there a way to "attribute" a type in

How to distinguish signed and unsigned integer in LLVM

a 夏天 提交于 2020-04-29 11:48:06
问题 The LLVM project does not distinguish between signed and unsigned integers as described here. There are situations where you need to know if a particular variable should be interpreted as signed or as unsigned though, for instance when it is size extended or when it is used in a division. My solution to this is to keep a separate type information for every variable that describes whether it is an integer or a cardinal type. However, I am wondering, isn't there a way to "attribute" a type in

小数在内存中是如何存储的?

随声附和 提交于 2020-04-29 08:59:34
小数在内存中是以浮点数的形式存储的。浮点数并不是一种数值分类,它和整数、小数、实数等不是一个层面的概念。 浮点数是数字(或者说数值)在内存中的一种存储格式,它和定点数是相对的。 C语言使用定点数格式来存储 short、int、long 类型的整数,使用浮点数格式来存储 float、double 类型的小数。整数和小数在内存中的存储格式不一样。 我们在学习C语言时,通常认为浮点数和小数是等价的,并没有严格区分它们的概念,这也并没有影响到我们的学习,原因就是浮点数和小数是绑定在一起的,只有小数才使用浮点格式来存储。 其实,整数和小数可以都使用定点格式来存储,也可以都使用浮点格式来存储,但实际情况却是,C语言使用定点格式存储整数,使用浮点格式存储小数,这是在“数值范围”和“数值精度”两项重要指标之间追求平衡的结果,稍后我会给大家带来深入的剖析。 计算机的设计是一门艺术,很多实用技术都是权衡和妥协的结果。 浮点数和定点数中的“点”指的就是小数点! 对于整数,可以认为小数点后面都是零,小数部分是否存在并不影响整个数字的值,所以干脆将小数部分省略,只保留整数部分。 定点数 所谓定点数,就是指小数点的位置是固定的,不会向前或者向后移动。 假设我们用4个字节(32位)来存储无符号的定点数,并且约定,前16位表示整数部分,后16位表示小数部分,如下图所示: 如此一来,小数点就永远在第16位之后

高德APP启动耗时剖析与优化实践(iOS篇)

China☆狼群 提交于 2020-04-21 03:22:12
前言 最近高德地图APP完成了一次启动优化专项,超预期将双端启动的耗时都降低了65%以上,iOS在iPhone7上速度达到了400毫秒以内。就像产品们用后说的,快到不习惯。算一下每天为用户省下的时间,还是蛮有成就感的,本文做个小结。 (文中配图均为多才多艺的技术哥哥手绘) 启动阶段性能多维度分析 要优化,首先要做到的是对启动阶段的各个性能纬度做分析,包括主线程耗时、CPU、内存、I/O、网络。这样才能更加全面的掌握启动阶段的开销,找出不合理的方法调用。 启动越快,更多的方法调用就应该做成按需执行,将启动压力分摊,只留下那些启动后方法都会依赖的方法和库的初始化,比如网络库、Crash库等。而剩下那些需要预加载的功能可以放到启动阶段后再执行。 启动有哪几种类型,有哪些阶段呢? 启动类型分为: Cold:APP重启后启动,不在内存里也没有进程存在。 Warm:APP最近结束后再启动,有部分在内存但没有进程存在。 Resume:APP没结束,只是暂停,全在内存中,进程也存在。 分析阶段一般都是针对Cold类型进行分析,目的就是要让测试环境稳定。为了稳定测试环境,有时还需要找些稳定的机型,对于iOS来说iPhone7性能中等,稳定性也不错就很适合,Android的Vivo系列也相对稳定,华为和小米系列数据波动就比较大。 除了机型外,控制测试机温度也很重要,一旦温度过高系统还会降频执行

Alibaba Cloud Linux 2 中编译 Lotus

微笑、不失礼 提交于 2020-04-20 15:39:09
Filecoin 是一个开源的区块链项目, Lotus 是 Filecoin 的其中一个重要客户端。对于想尝鲜区块链这一热门技术的朋友来说,通常会选择 ArchLinux、Ubuntu 等相对易于折腾的发行版来使用。Alibaba Cloud Linux 2 (aka Aliyun Linux 2) 是基于 CentOS 7 的 RPM 生态构建的发行版系统,面对 Lotus 这样的先进生产力,能否老树发新芽呢?让我们开始折腾吧。 1. 购买一台 ECS 服务器。 在实例 购买页面 ,我们买了一台 Aliyun Linux 2.1903 LTS 版本的服务器。由于构建过程中需要频繁访问 GitHub 上的资源,我们选择了香港可用区以加快资源拉取速度。 2. 访问 Lotus 文档页面 Lotus 文档 页给出了常见的几个发行版的构建方式,离我们最近的就是 Fedora 了。然而直接执行 Fedora 页面上的步骤,并不能正确解决构建依赖。我们需要想想别的办法。 Fedora 文档页面上的依赖如下: These steps will install the following dependencies: go (1.13 or higher) gcc (7.4.0 or higher) git (version 2 or higher) bzr (some go dependency

程序编译流程与 GCC 编译器

故事扮演 提交于 2020-04-16 15:38:18
【推荐阅读】微服务还能火多久?>>> 在上世纪 7-80 年代,应用最为广泛的 UNIX 操作系统通常是一个闭源的商业软件。1983 年,麻省理工学院的程序员理查德·斯托曼提出了 GNU 计划,希望发展出一套完整的、开发源代码的操作系统以取代 UNIX,志在创建一个完全兼容 UNIX 的自由软件生态环境。 我们知道,一个完整的操作系统是需要包含许多软件的,除了最重要的操作系统内核之外,还需要有编辑器,编译器,Shell、视窗系统等等一系列软件作为支撑。直到 1989 年,GNU 计划中的其他部份都已经完成了,独缺一个操作系统内核。 1990 年,自由软件基金会开始将 Hurd 内核加入 GUN 计划。第二年,Linux 诞生,由于 Linux 诞生即开源,其良好的开放性使得几乎所有 GNU 计划中的、运行于用户空间的软件都可以在 Linux 上使用。于是许多开发者开始转向于 Linux,参与了 Linux 的开发与修改,Linux 也逐步成为了最受欢迎的 GNU 软件开发及运行平台。相反的,Hurd 内核直到 2013 年为止都还没能发布稳定的版本。 1992 年,Linux 与 GNU 计划结合,一个完全自由的操作系统正式诞生了。当时,理查德·斯托曼主张,因为 Linux 使用了许多的 GNU 软件,所以应该正名为 GNU/Linux,但这一提议并没有得到 Linux

LLVM / Clang 8 Compilation of OpenMP Code in Windows

淺唱寂寞╮ 提交于 2020-04-15 02:57:48
问题 I'm using the Windows version of Clang (LLVM) 8 under Windows. I'm compiling a code which uses OpenMP. Under the lib folder of Clang there are 2 files which are OpenMP related: libomp.lib . libiomp5md.dll . My questions are: When I compile the code I use the flags -Xclang -fopenmp for the compiler. In in GCC and ICC using the flags tell the compiler to link the OpenMP library automatically. What about Clang? Does it do it automatically or must I link with libomp.lib manually? Is there a way