用汇编代码解释变量声明定义概念
来源:互联网 发布:淘宝网网支付方式 编辑:程序博客网 时间:2024/04/29 18:32
学过C语言都知道变量有声明只是告诉编译器某个标识符是变量,而变量定义才会促使编译器为这个变量分配存储空间。下面就分类介绍不同的情况下,汇编后的代码:
一、全局变量
1. 临时定义(tentactive definition)一个外部全局变量a,代码如下:
汇编代码如下,认真看可知,int a对应的17行中的汇编代码,表示在数据段中分配一块地址是4字节对齐的区域。
2. 真实定义(definition)外部全局变量a,代码如下(为节省空间,仅列出关键部分):
汇编代码如下,对比增加了2-7行,且原来的17行没有了,第2行globl说明a是多文件都可调用。
3. 声明变量,即用exteren修饰全局变量。代码如下:
汇编代码如下,可知,exteren int a没有产生任何代码。
4. 定义静态全局变量,static修饰变量,临时定义情况下,代码如下
汇编代码如下,对比多出17、18行,17行中local说明a是静态变量,只能在当前文件中调用。
真实定义静态全局变量,代码如下:
汇编代码如下,对比可知“.golobl a”没有了,其他与真实定义一样。
根据上面代码知道,不管是extern还是static,不管是临时定义还是真实定义,全局变量存放都是静态内存空间,而非栈中。
二、临时变量
临时定义变量一样不会生成任何汇编代码,真实定义的变量都存放在栈中,汇编代码如下,变量赋值在12行,明显存放在栈中。
- 用汇编代码解释变量声明定义概念
- 汇编基础(1)变量及数组的定义声明
- 汇编中变量及数组的定义声明
- 声明和定义概念
- 变量的声明定义
- 变量 声明与定义
- 变量定义与声明
- 变量声明与定义
- 变量定义,初始化,声明
- 变量的声明,定义
- 变量声明与定义
- 变量声明和定义
- 变量声明,定义,初始化
- 汇编中的变量定义
- 定义变量与声明变量
- 汇编-代码解释集合
- 变量定义概念汇总
- 内存四域,变量声明和定义,寄存器,c内嵌汇编,auto,堆栈,常量,静态变量
- typeof运算符以及空接合运算符,运算符的优先级
- 由windbg断kernel32下的函数
- S60 wlan研究笔记
- SOA 与分布式
- 假如拥有时光机器和返老还童剂
- 用汇编代码解释变量声明定义概念
- C#的空接合运算符 三目运算符
- 用服务器的站长常犯的错误
- linux驱动开发中,关于[module.ko] undefined!报错
- System.Net.Mail 邮件发送
- 租房子注意事项【北漂租房守则】
- 多个控件共用一个消息响应函数
- gvim的配置文件
- ABAP Memory/SAP Memory/Shared Buffer/Database