GCC对编译的优化试验

2024-06-14 17:08
文章标签 gcc 编译 优化 试验

本文主要是介绍GCC对编译的优化试验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!





通过这两天的不断试验,研究反汇编代码,感觉GCC对编译的优化还是非常强的


1:局部变量及语句优化:
        函数内的,空局部变量,空语句都会被优化掉,不占用任何栈空间和代码空间
2:局部变量一定占用栈空间吗?
        众所周知,局部变量实际上是栈里存储的,如果局部变量都是基本数据类型,且都不大,会用寄存器代替,直接运算,不开栈空间。
    如果需要引有此变量的地址,因为寄存器的地址是不可引用的,所以必须开个栈空间存储变量
3:栈对齐:
        局部变量占用栈的空间是对齐的,目前64位的内核是16字节对齐,即如果局部变量int i,j,k的话,4*3=12字节
        但栈会开16个字节,sub    sp, sp, #0x10,
        如果int i,j,k,l,m 4*5=20字节,但实际上占用32字节,栈会开32个字节sub    sp, sp,     #0x20
        &i=ffffffc099b8ec4c,&j=ffffffc099b8ec50,&k=ffffffc099b8ec54,&l=ffffffc099b8ec58,&m=ffffffc099b8ec5c
        实际上i,j,k,l,m间隔还是一个int长度,剩下的12个字节无用
4:修改优化等级:
        kernel-3.10/Make

这篇关于GCC对编译的优化试验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061009

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

【服务器运维】CentOS7 minimal 离线安装 gcc perl vmware-tools

0. 本机在有网的情况下,下载CentOS镜像 https://www.centos.org/download/ 1. 取出rpm 有的情况可能不需要net-tools,但是如果出现跟ifconfig相关的错误,就把它安装上。另外如果不想升级内核版本的话,就找对应内核版本的rpm版本安装 perl-Time-Local-1.2300-2.el7.noarch.rpmperl-Tim

装gcc

下载https://anaconda.org/serge-sans-paille/gcc_49/files  需要的gcc版本 把它放到/export/xxx/conda/pkgs 下 source要装的那个环境 到/export/xxx/conda/pkgs 下执行:conda install --use-local gcc_49-4.9.1-6.tar.bz2 装好后,gcc -v 发

服务器雪崩的应对策略之----SQL优化

SQL语句的优化是数据库性能优化的重要方面,特别是在处理大规模数据或高频访问时。作为一个C++程序员,理解SQL优化不仅有助于编写高效的数据库操作代码,还能增强对系统性能瓶颈的整体把握。以下是详细的SQL语句优化技巧和策略: SQL优化 1. 选择合适的数据类型2. 使用索引3. 优化查询4. 范式化和反范式化5. 查询重写6. 使用缓存7. 优化数据库设计8. 分析和监控9. 调整配置1、

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

Java中如何优化数据库查询性能?

Java中如何优化数据库查询性能? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Java中如何优化数据库查询性能,这是提升应用程序响应速度和用户体验的关键技术。 优化数据库查询性能的重要性 在现代应用开发中,数据库查询是最常见的操作之一。随着数据量的增加和业务复杂度的提升,数据库查询的性能优化显得尤为重