clang

Xcode 与 bitcode 的几个小知识点

北战南征 提交于 2020-11-25 13:50:47
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者 | 酷酷的哀殿 来源 | 酷酷的哀殿的博客 https://ai-chan.top/2020/10/19/Xcode-bitcode/ 开启 Enable Bitcode 配置后,不会触发额外的代码优化 根据官方文档,在 Build Settings 页面开启 Enable Bitcode (ENABLE_BITCODE) 选项后,会在 Archive 时,在支持的平台和架构上生成 bitcode 代码。 注意:只有通过 Archive 模式导出并提交到 App Store 时,才可能被苹果进行进一步的代码优化。 BITCODE_GENERATION_MODE BITCODE_GENERATION_MODE 是 Xcode 定义的一个枚举值。 它存在两种可能值:marker 和 bitcode。 marker 代表编译的二进制文件只包含 size 等于 1 的 marker进行占位。 bitcode 代表编译的二进制文件包含真正的 bitcode 信息。 { Name = "BITCODE_GENERATION_MODE"; Type = enum; Values = ( "marker", "bitcode", );

【openJDK系列1】macos编译openJDK 8

左心房为你撑大大i 提交于 2020-11-24 16:00:52
背景 因为之前一直在研究jdk源码,但是基于自己比较懒的缘故,一直没有手动编译过jdk源码,也就只是看看书本上的东西,似懂非懂的看懂了也就草草了事了,这次终于下定决心编译一把openJDK8的源码 基础环境 macos High Sierra 10.13.1 openJDK 8 编译 直接找到 http://hg.openjdk.java.net/ ,执行以下命令 # 安装mercurial brew install mercurial # clone openJDK源码 hg clone http://hg.openjdk.java.net/jdk8/jdk8 openjdk8 当然在 git JDK 也有对应的JDK源码,git clone之后checkout到对应的tag上进行编译也是可以的 git clone https://github.com/openjdk/jdk git checkout -b openjdk8 jdk8-b80 注意如果是用hg clone的方式我们还得执行sh ./get_source.sh命令来获取额外的文件,对于Mercurial和Git的区别,网上一大堆,网友可以自行查找,操作方式可以参考 hg git 操作 我们这里选择hg clone的方式,执行 cd openjdk8 && sh ./get_source.sh 安装依赖 brew

Python从入门到入土-Mac环境搭建,如何驾驭python2和python3

偶尔善良 提交于 2020-11-21 04:36:30
听说最近Python已被纳入小学生的课程了,作为一个资深搞技术的人,不会写python,简直焦虑无比,大概这就叫中年危机吧,那么,既然小学生都可以学,就放下姿态,也来学着写写吧,毕竟有一技之长还可以讨口饭吃。 嘿喂狗~~~ Python安装 Python官网: https://www.python.org/ Python文档下载地址: https://www.python.org/doc/ 以下是各个平台安装包的下载地址: 选择自己要安装的平台,我也是傻,不知道Mac自带Python2.7,所以又装了一遍Python3.6,然后发现居然是可以完美兼容的, 安装python3 Mac的brew真的也是相当好用,使用homebrew安装,方便快捷好管理,棒棒哒 brew install python3 安装好后检查是否安装成功,输入python3看是否能进入python3命令行,可以看到我这里安装的python3的版本是3.6.5 $python3 Python 3.6.5 (default, Apr 25 2018, 14:23:58) [GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)] on darwin Type "help", "copyright", "credits" or "license" for

应用层内存溢出/越界/重复释放等问题检查工具(ASan)

爷,独闯天下 提交于 2020-11-21 04:04:50
https://github.com/google/sanitizers/wiki https://github.com/google/sanitizers/wiki/AddressSanitizer AddressSanitizer (aka ASan) is a memory error detector for C/C++. It finds: Use after free (dangling pointer dereference) Heap buffer overflow Stack buffer overflow Global buffer overflow Use after return Use after scope Initialization order bugs Memory leaks This tool is very fast. The average slowdown of the instrumented program is ~2x (see AddressSanitizerPerformanceNumbers ). The tool consists of a compiler instrumentation module (currently, an LLVM pass) and a run-time library which

linux下vscode备忘

喜欢而已 提交于 2020-11-19 07:26:47
vscode如何自定义,如何方便地编写c/c++ vscode支持vim、sublime快捷键,在设置->keymap可以安装相应插件 vscode默认的快捷键支持自定义,打开keyboard shortcuts可以绑定新的键位, ~/.config/Code/User/keybindings.json对应了新的改键 主题thems也可以自定义 vscode的配置文件为json,有三级配置,defaultsettings.json是read-only,用户级配置 是settings.json,第三级配置是workspace的settings.json。后一级配置的键值对可以 覆盖前一级的。json的格式可以查阅网上文档。 插件也是可以设置的,插件的settings也有UI界面和json源文件可以设置 插件介绍 Atom One Dark Them:提供Atom风格的主题 C/C++ Themes:提供了两款主题 C/C++:提供了代码提示、格式化、查看定义等 Clang-Format:提供了Clang风格的格式化 cppcheck:需要先安装sudo apt-get install cppcheck,c/c++静态检查工具 vscode-icons:文件图标美化 code-runner:运行代码,用户级settings.json里的code-runner

1.初识C语言

跟風遠走 提交于 2020-11-11 10:23:17
初识C语言 什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,但仍保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包括一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。 二十世纪八十年代,为了避免个开发厂商用的C语言语法产生差异,有美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最早的标准。目前2011年12月8日,国际标准组织(ISO)和国际电工委员会(IEC)发布的 C11标准 是C语言的第三个官方标准,也是C语言最新的标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。 C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、MSVC、Turbo C、WIN-TC、SUBLIME等。 第一个C语言程序 #include <stdio.h> int main() { printf("Hello World"); return 0; } 解释: main函数是程序的入口 一个工程中main函数有且只有一个 基本数据类型 类型名

定点数优化:性能成倍提升

旧街凉风 提交于 2020-11-02 02:40:57
定点数优化:性能成倍提升 韦易笑 ​ 游戏开发、编程、游戏等 4 个话题下的优秀回答者 495 人赞同了该文章 定点数这玩意儿并不是什么新东西,早年 CPU 浮点性能不够,定点数技巧大量活跃于各类图形图像处理的热点路径中。今天 CPU 浮点上来了,但很多情况下整数仍然快于浮点,因此比如:libcario (gnome/quartz 后端)及 pixman 之类的很多库里你仍然找得到定点数的身影。那么今天我们就来看看使用定点数到底能快多少。 简单用一下的话,下面这几行宏就够了: #define cfixed_from_int(i) (((cfixed)(i)) << 16) #define cfixed_from_float(x) ((cfixed)((x) * 65536.0f)) #define cfixed_from_double(d) ((cfixed)((d) * 65536.0)) #define cfixed_to_int(f) ((f) >> 16) #define cfixed_to_float(x) ((float)((x) / 65536.0f)) #define cfixed_to_double(f) ((double)((f) / 65536.0)) #define cfixed_const_1 (cfixed_from_int(1)) #define