x86架构下64位的ubuntu环境下汇编(O2优化)及函数调用栈的理解

embedded/2024/10/18 23:27:13/

1.引言

在我的另一篇博客(链接:x86 64位的ubuntu环境下汇编(无优化)及函数调用栈的详解-CSDN博客)中详细分析了没有优化的情况下汇编的详解。在这篇文章中,尝试差分解析使用O2编译优化后生成的汇编代码,看看有啥不同。

2.源码

和链接中的源码是一样的。

#include<stdio.h>typedef unsigned char uint8;uint8 a = 0U;
uint8 b = 0U;int main(int argn, char* argv[])
{a = b + 1;b = 1;return 0;
}

汇编命令

g++ -S -O2 reorder_demo.cpp

3.汇编代码

如下:

	.file	"reorder_demo.cpp".text.section	.text.startup,"ax",@progbits.p2align 4.globl	main.type	main, @function
main:
.LFB30:.cfi_startprocendbr64movzbl	b(%rip), %eaxmovb	$1, b(%rip)addl	$1, %eaxmovb	%al, a(%rip)xorl	%eax, %eaxret.cfi_endproc
.LFE30:.size	main, .-main.globl	b.bss.type	b, @object.size	b, 1
b:.zero	1.globl	a.type	a, @object.size	a, 1
a:.zero	1.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0".section	.note.GNU-stack,"",@progbits.section	.note.gnu.property,"a".align 8.long	 1f - 0f.long	 4f - 1f.long	 5
0:.string	 "GNU"
1:.align 8.long	 0xc0000002.long	 3f - 2f
2:.long	 0x3
3:.align 8
4:

4.差分详解

首先看起来就比上篇文章中汇编简洁不少,结构上也有不同,

全局变量a和b的汇编内容放在了main函数内容之后。

剩余部分下回分解 


http://www.ppmy.cn/embedded/28297.html

相关文章

Delta lake with Java--利用spark sql操作数据2

上一篇文章尝试了建库&#xff0c;建表&#xff0c;插入数据&#xff0c;还差删除和更新&#xff0c;所以在这篇文章补充一下&#xff0c;代码很简单&#xff0c;具体如下&#xff1a; import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession;publi…

软件定义汽车落地的五大关键要素

1、架构升级 1.1 软件架构&#xff1a;分层解耦、服务化、API 接口标准化 随着企业向软件定义汽车开发方法的转变&#xff0c;软件架构也需要同步进行升级&#xff0c;引入面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;简称 SOA&#xff09;方法论。…

Java项目:基于SSM框架实现的高校专业信息管理系统设计与实现(ssm+B/S架构+源码+数据库+毕业论文+PPT+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的高校专业信息管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

json.loads()与json.dumps()区别

1、json.loads() 序列化&#xff0c;将JSON字符串&#xff0c;转换为Python的数据结构&#xff0c;如字典。 2、json.dumps() 反序列化&#xff0c;将Python的数据结构&#xff0c;转换成JSON字符串。

github托管静态页面

免费在线上空间&#xff0c;不用简直就是浪费&#xff0c;关键还不限流量赶紧去折腾一下 这是搭建的GitHub托管网页&#xff0c;由于是GitHub的服务器&#xff0c;国内访问会非常&#xff01;慢 下载 Watt Toolkit 这里我建议下载一个软件 Watt Toolkit 它是一个开源跨…

1. 深度学习笔记--神经网络中常见的激活函数

1. 介绍 每个激活函数的输入都是一个数字&#xff0c;然后对其进行某种固定的数学操作。激活函数给神经元引入了非线性因素&#xff0c;如果不用激活函数的话&#xff0c;无论神经网络有多少层&#xff0c;输出都是输入的线性组合。激活函数的意义在于它能够引入非线性特性&am…

【MATLAB源码-第200期】基于matlab的鸡群优化算法(CSO)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 鸡群优化算法&#xff08;Chicken Swarm Optimization&#xff0c;简称CSO&#xff09;是一种启发式搜索算法&#xff0c;它的设计灵感来源于鸡群的社会行为。这种算法由Xian-bing Meng等人于2014年提出&#xff0c;旨在解决…

ArcGIS小技巧—基于点数据的密度分析(含练习数据)

关于空间点数据的密度分析&#xff0c;Arcgis Map中提供了基础的点密度分析和核密度分析。核密度分析可以通过手动设置搜索半径&#xff0c;调整密度分布的合理性。 但有时由于实际工作的需要&#xff0c;我们需要对研究范围做特定划分&#xff0c;比如根据格网规则划分做密度…